/*
 * GeneradorComponentes.java
 * Copyright 2010 Universidad Francisco de Paula Santander (UFPS).
 * Todos los Derechos Reservados.
 * Creado el 28/04/2010, 11:22:25 AM
 */
package com.ufps.cuatro.util.generadores;

import java.awt.GridBagConstraints;
import java.awt.Insets;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.AbstractList;
import java.util.AbstractMap;
import java.util.AbstractQueue;
import java.util.AbstractSequentialList;
import java.util.AbstractSet;
import java.util.ArrayList;
import java.util.Observer;
import java.util.StringTokenizer;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.JTree;

import com.ufps.cuatro.CuatroApp;
import com.ufps.cuatro.controlador.render.UtilRender;
import com.ufps.cuatro.modelo.analizador.ObjetoReflexion;
import com.ufps.cuatro.modelo.biblioteca.BibliotecaTrabajo;
import com.ufps.cuatro.modelo.old.ComponenteBeans;
import com.ufps.cuatro.modelo.representacion.CasoRepresentacion;
import com.ufps.cuatro.modelo.representacion.CustomObjetoReflexion;
import com.ufps.cuatro.modelo.representacion.EventoOyente;
import com.ufps.cuatro.modelo.representacion.Inicializacion;
import com.ufps.cuatro.modelo.representacion.InternalProperty;
import com.ufps.cuatro.modelo.representacion.MetodoOyente;
import com.ufps.cuatro.modelo.representacion.ModeloAsociado;
import com.ufps.cuatro.modelo.representacion.ObjetoConstructor;
import com.ufps.cuatro.modelo.representacion.ObjetoTipoDatoReflexion;
import com.ufps.cuatro.modelo.representacion.Oyente;
import com.ufps.cuatro.modelo.representacion.ParametroInicializacion;
import com.ufps.cuatro.modelo.representacion.ParametroMetodo;
import com.ufps.cuatro.modelo.representacion.ParametroObjetoConstructor;
import com.ufps.cuatro.modelo.representacion.ParametroPropiedad;
import com.ufps.cuatro.modelo.representacion.Plantilla;
import com.ufps.cuatro.modelo.representacion.PlantillaCombo;
import com.ufps.cuatro.modelo.representacion.PlantillaComponente;
import com.ufps.cuatro.modelo.representacion.Propiedad;
import com.ufps.cuatro.modelo.representacion.PropiedadBeans;
import com.ufps.cuatro.modelo.representacion.TipoColeccionModeloAsociado;
import com.ufps.cuatro.modelo.representacion.TipoOrigen;
import com.ufps.cuatro.modelo.representacion.UtilRepresentacion;
import com.ufps.cuatro.modelo.representacion.componente.Componente;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidor;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorContenedor;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorContenedorEspejo;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorContenedorLibre;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorExtra;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorGenerador;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorGeneradorClaseCompleja;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorGeneradorEnum;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorGeneradorMetodo;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorGeneradorMetodoGetter;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorGeneradorMetodoSetter;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorGeneradorString;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorGeneradorUnitario;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorGeneradorVinculador;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorIntegrador;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorIntegradorExtra;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorIntegradorMetodo;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorIntegradorSimple;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorModeloAsociado;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteGeneradoInterno;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteGeneradoSimple;
import com.ufps.cuatro.util.Bandera;
import com.ufps.cuatro.util.ModelColeccion;
import com.ufps.cuatro.util.ModelItemColeccion;
import com.ufps.cuatro.util.Representacion;
import com.ufps.cuatro.util.TipoCaso;
import com.ufps.cuatro.util.Utileria;
import com.ufps.cuatro.util.base.CastTipoDatoRepresentacionBase;
import com.ufps.cuatro.util.base.ComponenteBase;
import com.ufps.cuatro.util.base.ComponenteBaseLink;
import com.ufps.cuatro.util.base.ComponenteBasePersonalizado;
import com.ufps.cuatro.util.base.ComponenteBaseStandar;
import com.ufps.cuatro.util.base.ConstructorBase;
import com.ufps.cuatro.util.base.EventoBase;
import com.ufps.cuatro.util.base.MetodoBase;
import com.ufps.cuatro.util.base.ModeloRepresentacionBase;
import com.ufps.cuatro.util.base.OyenteBase;
import com.ufps.cuatro.util.base.ParametroConstructorBase;
import com.ufps.cuatro.util.base.ParametroMetodoBase;
import com.ufps.cuatro.util.base.ParametroPropiedadBase;
import com.ufps.cuatro.util.base.PatronRepresentacionBase;
import com.ufps.cuatro.util.base.PropiedadBase;
import com.ufps.cuatro.util.base.PropiedadComponenteBase;
import com.ufps.cuatro.util.base.ReferenciaPatronBase;
import com.ufps.cuatro.util.base.TipoDatoRepresentacionBase;
import com.ufps.cuatro.util.opciones.MyPreferences;
import com.ufps.cuatro.util.opciones.UtilOpciones;
import com.ufps.cuatro.util.wizard.ObjectTempSwapWizard;

/**
 * <i><b>GeneradorComponentes:</b></i><p>Esta Clase Abstracta es el nucleo de generación de objetos en la Aplicación
 * permite generar los Componentes, Objetos que reflejan las estructuras analizadas por técnicas deReflexion (Introspección)
 * y Representaciones de la Tipos de Datos.</p>
 * <p>Esta clase tambien brinda soporte de generación de objetos ´para la automatización del Patron de representaciones.</p>
 *
 * @author Carlos A. Torres C. - Dolly E. Guerrero. <https://code.google.com/p/tesis4dor/>
 * @version 1.0 28/04/2010
 */
public abstract class GeneradorComponentes {

    /**
     * Colección de Componentes Base Estandar.
     */
    public static ArrayList<ComponenteBaseStandar> objComponentesBase;
    /**
     * Colección de Contenedores Base Estandar.
     */
    public static ArrayList<ComponenteBaseStandar> objContenedoresBase;
    /**
     * Colección de Componentes Personalizados Base.
     */
    public static ArrayList<ComponenteBasePersonalizado> objComponentesPersonalizadosBase;
    /**
     * Colección de Componentes Link (vinculados) Base.
     */
    public static ArrayList<ComponenteBaseLink> objComponentesLinksBase;
    /**
     * Colección de Oyentes Base.
     */
    public static ArrayList<OyenteBase> objOyentesBase;
    /**
     * Colección de Propiedades Base.
     */
    public static ArrayList<PropiedadBase> objPropiedadesBase;
    /**
     * Colección de Modelos de Representación de Tipos Datos Base.
     */
    public static ArrayList<ModeloRepresentacionBase> objModelosRepresentacionBase;
    /**
     * Colección de Tipos Datos Base.
     */
    public static ArrayList<TipoDatoRepresentacionBase> objTiposDatoRepresentacionBase;
    /**
     * Colección de Patrones Base.
     */
    public static ArrayList<PatronRepresentacionBase> objPatronesRepresentacionBase;  
    /**
     * Colección de Modelos de Propiedades.
     */
    public static ArrayList<ModelColeccion> objModelosColecciones;  
    /**
     * Patron Base.
     */
    public static PatronRepresentacionBase objPatronRepresentacionBase; 
    /**
     * Colección de Nombres de Controles que son identificados por Etiquetas.
     */
    public static ArrayList<String> objNombresConAcompanantes;  
    /**
     * Colección de Nombres de Controles que tienen identificación propia.
     */
    public static ArrayList<String> objNombresSinAcompanantes;  
    /**
     * Colección de Nombres de Controles que no aplica el acompañante.
     */
    public static ArrayList<String> objNombresNoAplicaAcompanantes;  
    /**
     * Colección de Alias para el inicio de los metodos get.
     */
    public static ArrayList<String> objAliasMetodosGetter;  
    /**
     * Colección de Alias para el inicio de los metodos set.
     */
    public static ArrayList<String> objAliasMetodosSetter;  
    /**
     * Colección de Alias para el inicio de los metodos is.
     */
    public static ArrayList<String> objAliasMetodosIs;
    /**
     * Modelo de Constantes GridBagConstraints.
     */
    public static final int MODELO_CONSTANTES_GRIDBAGCONSTRAINTS = 0;
    
    static{
        autoCargaDeObjetosPropierties();
    }                                    
    
    /**
     * Este Método es el punto de Inicio de Carga para los Objetos Base que 
     * soporta la Aplicación, permite inicializar las colecciones desde los
     * archivos properties.
     */
    private static void autoCargaDeObjetosPropierties(){
        try{
            objModelosColecciones               = GeneradorComponentes.crearModelos();       
            objComponentesBase                  = GeneradorComponentes.crearComponentesBase();
            objContenedoresBase                 = GeneradorComponentes.crearContenedoresBase();
            objOyentesBase                      = GeneradorComponentes.crearOyentesBase();
            objPropiedadesBase                  = GeneradorComponentes.crearPropiedadesBase();
            objModelosRepresentacionBase        = GeneradorComponentes.crearModelosRepresentacionesBase();
            objTiposDatoRepresentacionBase      = GeneradorComponentes.crearTiposDatosRepresentacionesBase();
            objComponentesPersonalizadosBase    = GeneradorComponentes.crearComponentesPersonalizadosBase();
            objComponentesLinksBase             = GeneradorComponentes.crearComponentesLinkBase();
            objPatronesRepresentacionBase       = GeneradorComponentes.crearPatronesBase();       
            String key                          = Utileria.leerRecursoTexto("Utileria.patron.representacion");
            int i                               = Integer.parseInt(key);    
            objPatronRepresentacionBase         = GeneradorComponentes.objPatronesRepresentacionBase.get(i);        
            identificarRepresentacionesPorNombre();
        }catch(java.lang.Exception ex){}
    } 
    
    /**
     * Este Método es el punto de Inicio de Carga para los arrays de nombres reservados de la 
     * aplicación su utilización es diversa de acuerdo al contexto donde apliquen.
     */
    public static void identificarRepresentacionesPorNombre(){
        try{
            String keyCon                   = "Utileria.swing.representaciones.con.acompanante";
            String keySin                   = "Utileria.swing.representaciones.sin.acompanante";
            String keyNA                    = "Utileria.swing.representaciones.noaplica.acompanante";
            String keySet                   = "Utileria.swing.representaciones.alias.metodo.setter";
            String keyGet                   = "Utileria.swing.representaciones.alias.metodo.getter";
            String keyIs                    = "Utileria.swing.representaciones.alias.metodo.is";
            objNombresConAcompanantes       = Representacion.objPropiedadesRepresentacion.getValuesProperties(keyCon);
            objNombresSinAcompanantes       = Representacion.objPropiedadesRepresentacion.getValuesProperties(keySin);
            objNombresNoAplicaAcompanantes  = Representacion.objPropiedadesRepresentacion.getValuesProperties(keyNA);
            objAliasMetodosGetter           = Representacion.objPropiedadesRepresentacion.getValuesProperties(keyGet);
            objAliasMetodosSetter           = Representacion.objPropiedadesRepresentacion.getValuesProperties(keySet);
            objAliasMetodosIs               = Representacion.objPropiedadesRepresentacion.getValuesProperties(keyIs);
        }catch(java.lang.Exception ex){}
    }
    
    /**
     * Devuelve una Coleccion de Propiedades Soportadas para el <code>Componente</code>.
     * @param objComponente <code>Componente</code> por el cual se devolverán las <code>Propiedades</code> Soportadas.
     * @return Coleccion de <code>Propiedades</code> Soportadas por el <code>Componente</code>.
     */
    public static ArrayList<Propiedad> crearPropiedadesDisponibles(Componente objComponente){
        try{
            ArrayList<Propiedad> objPropiedadesDisponibles = new ArrayList<Propiedad>();
            ComponenteBaseStandar objComponenteBase = objComponente.getObjComponenteBase();
            for(PropiedadComponenteBase objPropiedadComponenteBase : objComponenteBase.getObjPropiedadesDisponibles()){
                PropiedadBase objPropiedadBase = GeneradorComponentes.objPropiedadesBase.get(objPropiedadComponenteBase.getPropiedad());
                Propiedad objPropiedadDisponible = GeneradorComponentes.crearPropiedad(objComponente, objPropiedadBase);
                objPropiedadDisponible.idColeccion = objPropiedadesDisponibles.size();
                objPropiedadesDisponibles.add(objPropiedadDisponible);
            }
            return objPropiedadesDisponibles;
        }catch(java.lang.Exception ex){}
        return null;
    }
    
    /**
     * <p>Devuelve una Coleccion de Propiedades de uso interno para el <code>Componente</code>.</p>
     * <p>Una Propiedad Interna es una Propiedad de uso exclusivo por la aplicación para procesos automaticos.</p>
     * @param objComponente <code>Componente</code> por el cual se devolverán las Propiedades Internas.
     * @return Coleccion de Propiedades de uso interno para el <code>Componente</code>.
     */
    public static ArrayList<Propiedad> crearPropiedadesInternas(Componente objComponente){
        try{
            ArrayList<Propiedad> objPropiedadesInternas = new ArrayList<Propiedad>();
            ComponenteBaseStandar objComponenteBase = objComponente.getObjComponenteBase();
            for(PropiedadComponenteBase objPropiedadComponenteBase : objComponenteBase.getObjPropiedadesInternas()){
                PropiedadBase objPropiedadBase = GeneradorComponentes.objPropiedadesBase.get(objPropiedadComponenteBase.getPropiedad());
                Propiedad objPropiedadInterna = GeneradorComponentes.crearPropiedad(objComponente, objPropiedadBase);
                objPropiedadInterna.idColeccion = objPropiedadesInternas.size();
                objPropiedadesInternas.add(objPropiedadInterna);
            }
            return objPropiedadesInternas;
        }catch(java.lang.Exception ex){}
        return null;
    }   
    
    /**
     * Convierte <code>PropiedadBase</code> en una <code>Propiedad</code> valida para el <code>Componente</code> Actual.
     * @param objComponente <code>Componente</code> para el cual se devolverá la <code>Propiedad</code>.
     * @param objPropiedadBase <code>PropiedadBase</code> de la Aplicación Soportada por el <code>Componente</code>.
     * @return <code>Propiedad</code> para el <code>Componente</code> Actual.
     */
    public static Propiedad crearPropiedad(Componente objComponente, PropiedadBase objPropiedadBase){
        try{
            Propiedad objPropiedad = new Propiedad(                               
                    objPropiedadBase.getId(),
                    objPropiedadBase.getName(),
                    objPropiedadBase.getAlias(),
                    objPropiedadBase.getTooltips(),
                    objPropiedadBase.getSet(),
                    objPropiedadBase.getGet(),
                    objPropiedadBase.getRequeridas(),
                    objPropiedadBase.getContexto(),
                    objPropiedadBase.isEditable(),
                    objPropiedadBase.isEmpty()
                );            
            objPropiedad.setObjParametrosSet(GeneradorComponentes.crearParametrosSetPropiedad(objPropiedad, objPropiedadBase));
            objPropiedad.setObjParametrosGet(GeneradorComponentes.crearParametrosGetPropiedad(objPropiedad, objPropiedadBase));
            return objPropiedad;
        }catch(java.lang.Exception ex){}
        return null;
    }
    
    /**
     * Devuelve una Colección con los Parametros de entrada de la <code>Propiedad</code> Actual, por medio de su representación base (<code>PropiedadBase</code>).
     * @param objPropiedad <code>Propiedad</code> Actual.
     * @param objPropiedadBase <code>PropiedadBase</code> que Representa la <code>Propiedad</code> Actual por la cual se devolverán los Parametros de entrada.
     * @return Colección con los Parametros de entrada de la <code>Propiedad</code> Actual, por medio de su representación base (<code>PropiedadBase</code>).
     */
    public static ArrayList<ParametroPropiedad> crearParametrosSetPropiedad(Propiedad objPropiedad, PropiedadBase objPropiedadBase){
        try{
            ArrayList<ParametroPropiedad> objParametros = new ArrayList<ParametroPropiedad>();
            for(ParametroPropiedadBase objParametroPropiedadBase : objPropiedadBase.getObjParametrosSet()){
                ParametroPropiedad objParametro = GeneradorComponentes.crearParametro(objPropiedad, objParametroPropiedadBase);            
                objParametro.idColeccion = objParametros.size();
                objParametros.add(objParametro);
            }
            return objParametros;
        }catch(java.lang.Exception ex){}
        return null;
    }
    
    /**
     * Devuelve una Colección con los Parametros de salida de la <code>Propiedad</code> Actual, por medio de su representación base (<code>PropiedadBase</code>).
     * @param objPropiedad <code>Propiedad</code> Actual.
     * @param objPropiedadBase <code>PropiedadBase</code> que Representa la <code>Propiedad</code> Actual por la cual se devolverán los Parametros de salida.
     * @return Colección con los Parametros de salida de la <code>Propiedad</code> Actual, por medio de su representación base (<code>PropiedadBase</code>).
     */
    public static ArrayList<ParametroPropiedad> crearParametrosGetPropiedad(Propiedad objPropiedad, PropiedadBase objPropiedadBase){
        try{
            ArrayList<ParametroPropiedad> objParametros = new ArrayList<ParametroPropiedad>();
            for(ParametroPropiedadBase objParametroPropiedadBase : objPropiedadBase.getObjParametrosGet()){
                ParametroPropiedad objParametro = GeneradorComponentes.crearParametro(objPropiedad, objParametroPropiedadBase);            
                objParametro.idColeccion = objParametros.size();
                objParametros.add(objParametro);
            }
            return objParametros;
        }catch(java.lang.Exception ex){}
        return null;
    }
    
    /**
     * Devuelve un Parametro para la <code>Propiedad</code> Actual por medio de su representacion base (<code>ParametroPropiedadBase</code>).
     * @param objPropiedad <code>Propiedad</code> Actual.
     * @param objParametroPropiedadBase Parametro Base por el cual se devolverá el Parametro válido para la <code>Propiedad</code> Actual.
     * @return Parametro para la <code>Propiedad</code> Actual por medio de su representacion base (<code>ParametroPropiedadBase</code>).
     */
    public static ParametroPropiedad crearParametro(Propiedad objPropiedad, ParametroPropiedadBase objParametroPropiedadBase){
        try{
            ParametroPropiedad objParametro = new ParametroPropiedad(                         
                    objParametroPropiedadBase.getId(),
                    objParametroPropiedadBase.getStrClassPath(),
                    objParametroPropiedadBase.getStrDefault(),
                    objParametroPropiedadBase.getStrMascara(),
                    objParametroPropiedadBase.isPrimitive(),
                    objParametroPropiedadBase.isArray(),
                    objParametroPropiedadBase.getStrRender(),
                    objParametroPropiedadBase.getStrEditor()
                    );
            return objParametro;
        }catch(java.lang.Exception ex){}
        return null;
    }
    
    /**
     * Devuelve la Colección de <code>PropiedadeBase</code> para Todos los <code>ComponenteBase</code> soportados por la Aplicación.
     * @return Colección de <code>PropiedadeBase</code> para Todos los <code>ComponenteBase</code> soportados por la Aplicación.
     */
    public static ArrayList<PropiedadBase> crearPropiedadesBase(){
        try{
            ArrayList<PropiedadBase> objPropiedades = new ArrayList<PropiedadBase>();
            String keys = Representacion.objPropiedadesComponentes.getProperty("Utileria.swing.propiedad.keys");
            String key = "Utileria.swing.propiedad";
            ArrayList<String[]> propiedades = Representacion.objPropiedadesComponentes.getPropertiesList(key, keys);
            for(String[] values : propiedades){            
                PropiedadBase objPropiedad = new PropiedadBase(                        
                            Utileria.getValueInteger(values[0], 0),
                            Utileria.getValueString(values[1], ""),
                            Utileria.getValueString(values[2], ""),
                            Utileria.getValueString(values[3], ""),
                            Utileria.getValueString(values[4], ""),
                            Utileria.getValueString(values[5], ""),
                            Utileria.getValueString(values[6], ""),
                            Utileria.getValueInteger(values[7], 0),
                            Utileria.getValueBoolean(values[8], true),
                            Utileria.getValueBoolean(values[9], true)        
                        );            
                objPropiedad.setObjParametrosSet(GeneradorComponentes.crearParametrosSetPropiedadBase(objPropiedad));
                objPropiedad.setObjParametrosGet(GeneradorComponentes.crearParametrosGetPropiedadBase(objPropiedad));
                objPropiedad.idColeccion = objPropiedades.size();
                System.out.println(objPropiedad);
                objPropiedades.add(objPropiedad);
            }
            return objPropiedades;
        }catch(java.lang.Exception ex){}
        return null;
    }
    
    /**
     * Devuelve una Colección con los Parametros de entrada de la <code>PropiedadBase</code>.
     * @param objPropiedadBase <code>PropiedadBase</code>.
     * @return Colección con los Parametros de entrada de la <code>PropiedadBase</code>.
     */
    public static ArrayList<ParametroPropiedadBase> crearParametrosSetPropiedadBase(PropiedadBase objPropiedadBase){
        try{
            ArrayList<ParametroPropiedadBase> objParametros = new ArrayList<ParametroPropiedadBase>();
            String keys = Representacion.objPropiedadesComponentes.getProperty("Utileria.swing.propiedad.set.param.keys");
            String key = "Utileria.swing.propiedad[" + objPropiedadBase.getId() + "].set.param";
            ArrayList<String[]> propiedades = Representacion.objPropiedadesComponentes.getPropertiesList(key, keys);
            for(String[] values : propiedades){
                ParametroPropiedadBase objParametro = new ParametroPropiedadBase(
                            objPropiedadBase,
                            Utileria.getValueInteger(values[0], 0),
                            Utileria.getValueString(values[1], ""),
                            Utileria.getValueString(values[2], ""),
                            Utileria.getValueString(values[3], ""),
                            Utileria.getValueBoolean(values[4], false),
                            Utileria.getValueBoolean(values[5], false),
                            Utileria.getValueString(values[6], "JLabel"),
                            Utileria.getValueString(values[7], "JTextField")
                        );

                objParametros.add(objParametro);
            }
            return objParametros;
        }catch(java.lang.Exception ex){}
        return null;
    } 
    
    /**
     * Devuelve una Colección con los Parametros de salida de la <code>PropiedadBase</code>.
     * @param objPropiedadBase <code>PropiedadBase</code>.
     * @return Colección con los Parametros de salida de la <code>PropiedadBase</code>.
     */
    public static ArrayList<ParametroPropiedadBase> crearParametrosGetPropiedadBase(PropiedadBase objPropiedadBase){
        try{
            ArrayList<ParametroPropiedadBase> objParametros = new ArrayList<ParametroPropiedadBase>();
            String keys = Representacion.objPropiedadesComponentes.getProperty("Utileria.swing.propiedad.set.param.keys");
            String key = "Utileria.swing.propiedad[" + objPropiedadBase.getId() + "].set.param";
            ArrayList<String[]> propiedades = Representacion.objPropiedadesComponentes.getPropertiesList(key, keys);
            for(String[] values : propiedades){
                ParametroPropiedadBase objParametro = new ParametroPropiedadBase(
                            objPropiedadBase,
                            Utileria.getValueInteger(values[0], 0),
                            Utileria.getValueString(values[1], ""),
                            Utileria.getValueString(values[2], ""),
                            Utileria.getValueString(values[3], ""),
                            Utileria.getValueBoolean(values[4], false),
                            Utileria.getValueBoolean(values[5], false),
                            Utileria.getValueString(values[6], "JLabel"),
                            Utileria.getValueString(values[7], "JTextField")
                        );

                objParametros.add(objParametro);
            }
            return objParametros;
        }catch(java.lang.Exception ex){}
        return null;
    }
    
    /**
     * Devuelve una Colección con las Propiedades Disponibles para el <code>ComponenteBase</code> ó <code>ContenedorBase</code>.
     * @param objComponenteBase <code>ComponenteBase</code>.
     * @param esControl variable que determina si las propiedades son para un Control o Contenedor.
     * @return Colección con las Propiedades Disponibles para el <code>ComponenteBase</code> ó <code>ContenedorBase</code>.
     */
    public static ArrayList<PropiedadComponenteBase> crearPropiedadesDisponiblesComponenteBase(ComponenteBase objComponenteBase, boolean esControl){
        try{
            ArrayList<PropiedadComponenteBase> objPropiedades = new ArrayList<PropiedadComponenteBase>();
            String modo = esControl ? "control" : "contenedor";
            String keys = Representacion.objPropiedadesRepresentacion.getProperty("Utileria.swing.control.propiedad.keys");
            String key = "Utileria.swing." + modo + "[" + objComponenteBase.getId() + "].propiedad.usuario";
            ArrayList<String[]> propiedades = Representacion.objPropiedadesRepresentacion.getPropertiesList(key, keys);        
            for(String[] values : propiedades){
                PropiedadComponenteBase objPropiedadBase = new PropiedadComponenteBase(
                            objComponenteBase,
                            Utileria.getValueInteger(values[0], 0),
                            Utileria.getValueInteger(values[1], 0),
                            Utileria.getValueBoolean(values[2], false),
                            Utileria.getValueBoolean(values[3], false)
                        );                        
                objPropiedadBase.idColeccion = objPropiedades.size();
                objPropiedades.add(objPropiedadBase);        
            }
            return objPropiedades;
        }catch(java.lang.Exception ex){}
        return null;
    }
    
    /**
     * Devuelve una Colección con las Propiedades internas para el <code>ComponenteBase</code> ó <code>ContenedorBase</code>.
     * @param objComponenteBase <code>ComponenteBase</code>.
     * @param esControl variable que determina si las propiedades son para un Control o Contenedor.
     * @return Colección con las Propiedades internas para el <code>ComponenteBase</code> ó <code>ContenedorBase</code>.
     */
    public static ArrayList<PropiedadComponenteBase> crearPropiedadesInternasComponenteBase(ComponenteBase objComponenteBase, boolean esControl){
        try{
            ArrayList<PropiedadComponenteBase> objPropiedades = new ArrayList<PropiedadComponenteBase>();
            String modo = esControl ? "control" : "contenedor";
            String keys = Representacion.objPropiedadesRepresentacion.getProperty("Utileria.swing.control.propiedad.keys");
            String key = "Utileria.swing." + modo + "[" + objComponenteBase.getId() + "].propiedad.sistema";
            ArrayList<String[]> propiedades = Representacion.objPropiedadesRepresentacion.getPropertiesList(key, keys);        
            for(String[] values : propiedades){
                PropiedadComponenteBase objPropiedadBase = new PropiedadComponenteBase(
                            objComponenteBase,
                            Utileria.getValueInteger(values[0], 0),
                            Utileria.getValueInteger(values[1], 0),
                            Utileria.getValueBoolean(values[2], false),
                            Utileria.getValueBoolean(values[3], false)
                        );                        
                objPropiedadBase.idColeccion = objPropiedades.size();
                objPropiedades.add(objPropiedadBase);        
            }
            return objPropiedades;
        }catch(java.lang.Exception ex){}
        return null;
    }       
    
    /**
     * Devuelve la Colección de <code>Inicializacion</code> ó Valores por Defectos para las Propiedades del <code>Componente</code>.
     * @param objComponente <code>Componente</code>.
     * @return Colección de <code>Inicializacion</code> o Valores por Defectos para las Propiedades del <code>Componente</code>.
     */
    public static ArrayList<Inicializacion<Componente>> crearInicializaciones(Componente objComponente){        
        try{
            ArrayList<Inicializacion<Componente>> objInicializaciones = new ArrayList<Inicializacion<Componente>>();
            String keys = Representacion.objPropiedadesRepresentacion.getProperty("Utileria.swing.control.inicializacion.keys");
            String key = "Utileria.swing.control[" + objComponente.getId() + "].inicializacion";                            
            ArrayList<String[]> propiedades = Representacion.objPropiedadesRepresentacion.getPropertiesList(key, keys);
            for(String[] values : propiedades){
                Inicializacion<Componente> objInicializacion = new Inicializacion<Componente>(
                            objComponente,
                            Utileria.getValueInteger(values[0], 0),
                            Utileria.getValueInteger(values[1], 0),
                            Utileria.getValueBoolean(values[2], false),
                            Utileria.getValueInteger(values[3], 0),
                            Utileria.getValueBoolean(values[4], true)
                        );            
                objInicializacion.setObjParametros(GeneradorComponentes.crearParametroInicializacion(objInicializacion));
                objInicializacion.idColeccion = objInicializaciones.size();
                objInicializaciones.add(objInicializacion);
            }
            return objInicializaciones;
        }catch(java.lang.Exception ex){}
        return null;
    }   
    
    /**
     * Devuelve la Colección de <code>Inicializacion</code> ó Valores por Defectos para las Propiedades del <code>ComponenteBasePersonalizado</code>. 
     * @param objComponenteBasePersonlizado <code>ComponenteBasePersonalizado</code>. 
     * @param objComponente <code>Componente</code>. 
     * @return Colección de <code>Inicializacion</code> ó Valores por Defectos para las Propiedades del <code>ComponenteBasePersonalizado</code>. 
     */
    public static ArrayList<Inicializacion<Componente>> crearInicializaciones(ComponenteBasePersonalizado objComponenteBasePersonlizado, Componente objComponente){        
        try{
            ArrayList<Inicializacion<Componente>> objInicializaciones = new ArrayList<Inicializacion<Componente>>();
            String keys = Representacion.objPropiedadesRepresentacion.getProperty("Utileria.swing.personalizado.inicializacion.keys");
            String key = "Utileria.swing.personalizado[" + objComponenteBasePersonlizado.getId() + "].inicializacion";                            
            ArrayList<String[]> propiedades = Representacion.objPropiedadesRepresentacion.getPropertiesList(key, keys);
            for(String[] values : propiedades){
                Inicializacion<Componente> objInicializacion = new Inicializacion<Componente>(
                            objComponente,
                            Utileria.getValueInteger(values[0], 0),
                            Utileria.getValueInteger(values[1], 0),
                            Utileria.getValueBoolean(values[2], false),
                            Utileria.getValueInteger(values[3], 0),
                            Utileria.getValueBoolean(values[4], true)                    
                        );            
                objInicializacion.setObjParametros(GeneradorComponentes.crearParametroInicializacion(objComponenteBasePersonlizado, objInicializacion));
                objInicializacion.idColeccion = objInicializaciones.size();
                objInicializaciones.add(objInicializacion);
            }
            return objInicializaciones;
        }catch(java.lang.Exception ex){}
        return null;
    }
    
    /**
     * Devuelve la Colección de <code>Inicializacion</code> ó Valores por Defectos para las Propiedades del <code>ComponenteBaseLink</code>. 
     * @param objComponenteBaseLink <code>ComponenteBaseLink</code>. 
     * @param objComponente <code>Componente</code>. 
     * @return Colección de <code>Inicializacion</code> ó Valores por Defectos para las Propiedades del <code>ComponenteBaseLink</code>. 
     */
    public static ArrayList<Inicializacion<Componente>> crearInicializaciones(ComponenteBaseLink objComponenteBaseLink, Componente objComponente){        
        try{
            ArrayList<Inicializacion<Componente>> objInicializaciones = new ArrayList<Inicializacion<Componente>>();
            String keys = Representacion.objPropiedadesRepresentacion.getProperty("Utileria.swing.link.inicializacion.keys");
            String key = "Utileria.swing.link[" + objComponenteBaseLink.getId() + "].inicializacion";                            
            ArrayList<String[]> propiedades = Representacion.objPropiedadesRepresentacion.getPropertiesList(key, keys);
            for(String[] values : propiedades){
                Inicializacion<Componente> objInicializacion = new Inicializacion<Componente>(
                            objComponente,
                            Utileria.getValueInteger(values[0], 0),
                            Utileria.getValueInteger(values[1], 0),
                            Utileria.getValueBoolean(values[2], false),
                            Utileria.getValueInteger(values[3], 0),
                            Utileria.getValueBoolean(values[4], true)                    
                        );            
                objInicializacion.setObjParametros(GeneradorComponentes.crearParametroInicializacion(objComponenteBaseLink, objInicializacion));
                objInicializacion.idColeccion = objInicializaciones.size();
                objInicializaciones.add(objInicializacion);
            }
            return objInicializaciones;
        }catch(java.lang.Exception ex){}
        return null;
    }
    
    /**
     * Crea un Parametro de Inicialización para la Inicialización de Propiedad de un Componente Base Personalizado.
     * @param objComponenteBasePersonlizado  Componente Base Personalizado.
     * @param objInicializacion Inicialización de Propiedad.
     * @return Parametro de Inicialización para la Inicialización de Propiedad de un Componente Base Personalizado.
     */
    public static ArrayList<ParametroInicializacion> crearParametroInicializacion(ComponenteBasePersonalizado objComponenteBasePersonlizado, Inicializacion<Componente> objInicializacion){        
        try{
            ArrayList<ParametroInicializacion> objParametrosInicializacion = new ArrayList<ParametroInicializacion>();
            String keys = Representacion.objPropiedadesRepresentacion.getProperty("Utileria.swing.personalizado.inicializacion.parametro.keys");
            String key = "Utileria.swing.personalizado[" + objComponenteBasePersonlizado.getId() + "].inicializacion[" + objInicializacion.getId() + "].parametro";
            ArrayList<String[]> propiedades = Representacion.objPropiedadesRepresentacion.getPropertiesList(key, keys);
            for(String[] values : propiedades){
                ParametroInicializacion objParametroInicializacion = new ParametroInicializacion(
                            objInicializacion,
                            Utileria.getValueInteger(values[0], 0),
                            Utileria.getValueString(values[1], "").trim(),
                            Utileria.getValueString(values[2], "").trim()
                        );                        
                objParametroInicializacion.idColeccion = objParametrosInicializacion.size();
                objParametrosInicializacion.add(objParametroInicializacion);
            }
            return objParametrosInicializacion;
        }catch(java.lang.Exception ex){}
        return null;
    }
    
    /**
     * Crea un Parametro de Inicialización para la Inicialización de Propiedad de un Componente Vinculador.
     * @param objComponenteBaseLink  Componente Vinvulador.
     * @param objInicializacion Inicialización de Propiedad.
     * @return Parametro de Inicialización para la Inicialización de Propiedad de un Componente Vinculador.
     */
    public static ArrayList<ParametroInicializacion> crearParametroInicializacion(ComponenteBaseLink objComponenteBaseLink, Inicializacion<Componente> objInicializacion){        
        try{
            ArrayList<ParametroInicializacion> objParametrosInicializacion = new ArrayList<ParametroInicializacion>();
            String keys = Representacion.objPropiedadesRepresentacion.getProperty("Utileria.swing.link.inicializacion.parametro.keys");
            String key = "Utileria.swing.link[" + objComponenteBaseLink.getId() + "].inicializacion[" + objInicializacion.getId() + "].parametro";
            ArrayList<String[]> propiedades = Representacion.objPropiedadesRepresentacion.getPropertiesList(key, keys);
            for(String[] values : propiedades){
                ParametroInicializacion objParametroInicializacion = new ParametroInicializacion(
                            objInicializacion,
                            Utileria.getValueInteger(values[0], 0),
                            Utileria.getValueString(values[1], "").trim(),
                            Utileria.getValueString(values[2], "").trim()
                        );                        
                objParametroInicializacion.idColeccion = objParametrosInicializacion.size();
                objParametrosInicializacion.add(objParametroInicializacion);
            }
            return objParametrosInicializacion;
        }catch(java.lang.Exception ex){}
        return null;
    }
    
    /**
     * Crea un Parametro de Inicialización para la Inicialización de Propiedad.
     * @param objInicializacion Inicialización de Propiedad.
     * @return Parametro de Inicialización para la Inicialización de Propiedad.
     */
    public static ArrayList<ParametroInicializacion> crearParametroInicializacion(Inicializacion<Componente> objInicializacion){        
        try{
            ArrayList<ParametroInicializacion> objParametrosInicializacion = new ArrayList<ParametroInicializacion>();
            String keys = Representacion.objPropiedadesRepresentacion.getProperty("Utileria.swing.control.inicializacion.parametro.keys");
            String key = "Utileria.swing.control[" + objInicializacion.getObjComponente().getId() + "].inicializacion[" + objInicializacion.getId() + "].parametro";
            ArrayList<String[]> propiedades = Representacion.objPropiedadesRepresentacion.getPropertiesList(key, keys);
            for(String[] values : propiedades){
                ParametroInicializacion objParametroInicializacion = new ParametroInicializacion(
                            objInicializacion,
                            Utileria.getValueInteger(values[0], 0),
                            Utileria.getValueString(values[1], "").trim(),
                            Utileria.getValueString(values[2], "").trim()
                        );                        
                objParametroInicializacion.idColeccion = objParametrosInicializacion.size();
                objParametrosInicializacion.add(objParametroInicializacion);
            }
            return objParametrosInicializacion;
        }catch(java.lang.Exception ex){}
        return null;
    }        
    
    /**
     * Genera y Devuelve la Colección de Componentes Generados Representados en la Cadena de Indices. 
     * @param strTokens Cadena de indices que representan controles del archivos de propiedades que define los controles soportados.
     * @return Colección de Componentes Generados Representados en la Cadena de Indices. 
     */
    public static ArrayList<ComponenteGeneradoSimple> crearComponentesGenerados(String strTokens){
        try{
            ArrayList<ComponenteGeneradoSimple> objComponentesGenerados = new ArrayList<ComponenteGeneradoSimple>();
            StringTokenizer objToken = new StringTokenizer(strTokens, ", ");
            while (objToken.hasMoreTokens()){
                try{
                    int id = Integer.parseInt(objToken.nextToken());
                    ComponenteBaseStandar objComponenteBase = GeneradorComponentes.objComponentesBase.get(id);
                    ComponenteGeneradoSimple objComponenteGenerado = crearComponenteGeneradoSimple(objComponenteBase, false);
                    objComponentesGenerados.add(objComponenteGenerado);
                }catch(java.lang.NumberFormatException ex){
                    continue;
                }
            }
            return objComponentesGenerados;
        }catch(java.lang.Exception ex){}
        return null;
    }

    /**
     * Genera y Devuelve la Colección de Componentes Generados Incluidos en el <code>Componente</code>.
     * @param objComponente <code>Componente</code> que contiene la cadena de definición de Componentes Generados.
     * @return Colección de <code>ComponenteGenerado</code>.
     * @deprecated Método reemplazado por una Implementación por Tipos de Datos.
     */
    public static ArrayList<ComponenteGeneradoSimple> crearComponentesGenerados(ComponenteDistribuidorExtra objComponente){
        try{
            return crearComponentesGenerados(objComponente.getStrComponentesGenerados());
        }catch(java.lang.NullPointerException ex){}
        return null;    
    }
    
    /**
     * Genera y Devuelve la Colección de Componentes Generados Incluidos en el <code>Componente</code>.
     * @param objComponente <code>Componente</code> que contiene la cadena de definición de Componentes Generados.
     * @return Colección de <code>ComponenteGenerado</code>.
     */
    public static ArrayList<ComponenteGeneradoSimple> crearComponentesGenerados(ComponenteDistribuidorGeneradorUnitario objComponente){
        try{
            return crearComponentesGenerados(objComponente.getStrComponentesGenerados());
        }catch(java.lang.NullPointerException ex){}
        return null;    
    }
    
    /**
     * Genera y Devuelve la Colección de Componentes Generados Incluidos en el <code>Componente</code>.
     * @param objComponente <code>Componente</code> que contiene la cadena de definición de Componentes Generados.
     * @return Colección de <code>ComponenteGenerado</code>.
     */
    public static ArrayList<ComponenteGeneradoSimple> crearComponentesGenerados(ComponenteDistribuidorGeneradorString objComponente){
        try{
            return crearComponentesGenerados(objComponente.getStrComponentesGenerados());
        }catch(java.lang.NullPointerException ex){}
        return null;    
    }
    
    /**
     * Genera y Devuelve la Colección de Componentes Generados Incluidos en el <code>Componente</code>.
     * @param objComponente <code>Componente</code> que contiene la cadena de definición de Componentes Generados.
     * @return Colección de <code>ComponenteGenerado</code>.
     */
    public static ArrayList<ComponenteGeneradoSimple> crearComponentesGenerados(ComponenteDistribuidorGeneradorEnum objComponente){
        try{
            return crearComponentesGenerados(objComponente.getStrComponentesGenerados());
        }catch(java.lang.NullPointerException ex){}
        return null;    
    }
    
    /**
     * Genera y Devuelve la Colección de Componentes Generados Incluidos en el <code>Componente</code>.
     * @param objComponente <code>Componente</code> que contiene la cadena de definición de Componentes Generados.
     * @return Colección de <code>ComponenteGenerado</code>.
     */
    public static ArrayList<ComponenteGeneradoSimple> crearComponentesGenerados(ComponenteDistribuidorGeneradorVinculador objComponente){
        try{
            return crearComponentesGenerados(objComponente.getStrComponentesGenerados());
        }catch(java.lang.NullPointerException ex){}
        return null;    
    }   

    /**
     * Crea una Representación por medio del <code>ComponenteBaseStandar</code>.
     * @param objComponenteBase Referencia del <code>ComponenteBaseStandar</code> que representa el Área de Interfaz Gráfica.
     * @param generados Determina si se incluyen <code>ComponenteGenerado</code> en el Área de Interfaz Gráfica.
     * @return <code>Componente</code> que Representa el Área de Interfaz Gráfica.
     * @deprecated Método Degradado por Implementación por Representación por Tipos de Datos.
     */
    public static ComponenteDistribuidorExtra crearComponenteExtra(ComponenteBaseStandar objComponenteBase, boolean generados){
//        try{
        if(objComponenteBase != null){
        
                ComponenteBaseStandar objContenedorBase = GeneradorComponentes.objPatronRepresentacionBase.getContenedorBaseUnitario();        

                ComponenteDistribuidorExtra objComponente = new ComponenteDistribuidorExtra(objComponenteBase, false, false);

                ComponenteGeneradoInterno objComponenteGenerador = GeneradorComponentes.crearComponenteGeneradoInterno(objComponenteBase);        

                objComponente.setObjComponenteGenerador(objComponenteGenerador);

                objComponente.seteOrigen(TipoOrigen.eBase);

                objComponente.setId(objContenedorBase.getId());

                objComponente.setContenedor(objContenedorBase.isContenedor());
                objComponente.setFinish(true);

                objComponente.setHeight(objContenedorBase.getHeight());
                objComponente.setWidth(objContenedorBase.getWidth());        

                objComponente.setIdConstructor(objContenedorBase.getConstructor());        
                //objComponente.setObjConstructores(crearConstructores(objContenedorBase.getObjConstructoresBase()));

                objComponente.setStrComponentesGenerados(objComponenteBase.getStrObjetos());        
                objComponente.setStrOyentes(objContenedorBase.getStrOyentes());

                if(objContenedorBase.getObjGridBagConstraints() != null){
                    objComponente.setObjGridBagConstraints(objContenedorBase.getObjGridBagConstraints());
                }       

                objComponente.setInicializacion(objComponenteBase.isInicializacion());
                if(objComponente.isInicializacion()){
                    objComponente.setObjInicializaciones(crearInicializaciones(objComponente.getObjComponenteGenerador()));
                }    

                if(!objComponente.getStrOyentes().isEmpty()){
                    objComponente.setObjOyentes(crearOyentes(objComponente));
                }       

                if(generados && !objComponente.getStrComponentesGenerados().isEmpty()){     
                    objComponente.setObjComponentesGenerados(crearComponentesGenerados(objComponente));
                    objComponente.cargarPlantillasDesdeArchivoProperties(crearPlantillas(objComponente.getObjComponenteGenerador()));
                }
                else{
                    //aqui se debe evaluar que exista la menos una plantilla para el componente
                    objComponente.cargarPlantillasDesdeArchivoProperties(crearPlantillas(objComponente.getObjComponenteGenerador()));
                }

                if(objContenedorBase.tienePropiedadesDisponibles()){
                    ArrayList<Propiedad> objPropiedadesDisponibles = GeneradorComponentes.inicializarPropiedadesDisponiblesComponenteBase(objComponente);
                    objComponente.setObjPropiedadesDisponibles(objPropiedadesDisponibles);
                } 

                if(objContenedorBase.tienePropiedadesInternas()){
                    ArrayList<Propiedad> objPropiedadesInternas = GeneradorComponentes.crearPropiedadesInternas(objComponente);
                    objComponente.setObjPropiedadesInternas(objPropiedadesInternas);        
                }       

                System.out.println(objComponente);
                return objComponente;
        }else{
            UtilRender.printlnConsole("Objeto Componente base Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
        return null;
    }    
    
    /**
     * @DefinicionMetodo
     * @param objComponenteBase @DefinicionParametro
     * @param objTipoDato @DefinicionParametro
     * @param generados @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ComponenteDistribuidorGeneradorUnitario crearComponenteGeneradorUnitario(ComponenteBaseStandar objComponenteBase, Class objTipoDato, boolean generados){
        return crearComponenteGeneradorUnitario(objComponenteBase, objTipoDato, false, false, generados);                
    }
    
    /**
     * @DefinicionMetodo
     * @param objComponenteBase @DefinicionParametro
     * @param objTipoDato @DefinicionParametro
     * @param generados @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ComponenteDistribuidorGeneradorString crearComponenteGeneradorString(ComponenteBaseStandar objComponenteBase, Class objTipoDato, boolean generados){
        return crearComponenteGeneradorString(objComponenteBase, objTipoDato, false, false, generados);                
    }
    
    /**
     * 
     * @param objComponentePersonalizadoBase
     * @param strClassPathTipoDato 
     * @return @DefinicionReturn
     */
    public static ComponenteDistribuidorGeneradorUnitario crearComponenteGeneradorUnitario(ComponenteBasePersonalizado objComponentePersonalizadoBase, String strClassPathTipoDato){
        try{
            int id = Integer.parseInt(objComponentePersonalizadoBase.getGenerador());
            ComponenteBaseStandar objComponenteBase = GeneradorComponentes.devolverComponenteBasePorId(id);        
            ComponenteDistribuidorGeneradorUnitario objComponente = 
                    crearComponenteGeneradorUnitarioPersonalizado(
                    objComponenteBase, 
                    strClassPathTipoDato,                 
                    false, 
                    false, 
                    objComponenteBase.getStrObjetos().isEmpty() ? false : true); 

            objComponente.seteOrigen(TipoOrigen.ePersonalizado);                

            objComponente.setInicializacion(objComponentePersonalizadoBase.isInicializacion());
            if(objComponente.isInicializacion()){
                objComponente.setObjInicializaciones(crearInicializaciones(objComponentePersonalizadoBase, objComponente));
            }       

            objComponente.setStrComponentesGenerados(objComponentePersonalizadoBase.getGenerados());        
            if(!objComponente.getStrComponentesGenerados().isEmpty()){                 
                objComponente.setObjComponentesGenerados(crearComponentesGenerados(objComponente));
                objComponente.cargarPlantillasDesdeArchivoProperties(crearPlantillasPersonalizadas(objComponentePersonalizadoBase));
            }

            if(objComponentePersonalizadoBase.isInicializacion()){
                ArrayList<Propiedad> objPropiedades = inicializarPropiedadesPersonalizadas(objComponente);
                objComponente.setObjPropiedadesDisponibles(objPropiedades);        
            }
            return objComponente;
        }catch(java.lang.NullPointerException ex){}
        return null;
    }
    
    /**
     * 
     * @param objComponentePersonalizadoBase
     * @param strClassPathTipoDato 
     * @return @DefinicionReturn
     */
    public static ComponenteDistribuidorGeneradorString crearComponenteGeneradorString(ComponenteBasePersonalizado objComponentePersonalizadoBase, String strClassPathTipoDato){
        try{
            int id = Integer.parseInt(objComponentePersonalizadoBase.getGenerador());
            ComponenteBaseStandar objComponenteBase = GeneradorComponentes.devolverComponenteBasePorId(id);        
            ComponenteDistribuidorGeneradorString objComponente = 
                    crearComponenteGeneradorStringPersonalizado(
                    objComponenteBase, 
                    strClassPathTipoDato,                 
                    false, 
                    false, 
                    objComponenteBase.getStrObjetos().isEmpty() ? false : true); 

            objComponente.seteOrigen(TipoOrigen.ePersonalizado);                

            objComponente.setInicializacion(objComponentePersonalizadoBase.isInicializacion());
            if(objComponente.isInicializacion()){
                objComponente.setObjInicializaciones(crearInicializaciones(objComponentePersonalizadoBase, objComponente));
            }       

            objComponente.setStrComponentesGenerados(objComponentePersonalizadoBase.getGenerados());        
            if(!objComponente.getStrComponentesGenerados().isEmpty()){                 
                objComponente.setObjComponentesGenerados(crearComponentesGenerados(objComponente));
                objComponente.cargarPlantillasDesdeArchivoProperties(crearPlantillasPersonalizadas(objComponentePersonalizadoBase));
            }

            if(objComponentePersonalizadoBase.isInicializacion()){
                ArrayList<Propiedad> objPropiedades = inicializarPropiedadesPersonalizadas(objComponente);
                objComponente.setObjPropiedadesDisponibles(objPropiedades);        
            }
            return objComponente;
        }catch(java.lang.NullPointerException ex){}
        return null;
    }
    
    /**
     * @DefinicionMetodo
     * @param objComponenteBase @DefinicionParametro
     * @param objTipoDato @DefinicionParametro
@DefinicionParametro
     * @param heredado @DefinicionParametro
     * @param previsualizar @DefinicionParametro
     * @param generados @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ComponenteDistribuidorGeneradorUnitario crearComponenteGeneradorUnitario(ComponenteBaseStandar objComponenteBase, Class objTipoDato, boolean heredado, boolean previsualizar, boolean generados){
        try{
            ComponenteBaseStandar objContenedorBase = GeneradorComponentes.objPatronRepresentacionBase.getContenedorBaseUnitario();

            ComponenteDistribuidorGeneradorUnitario objComponente = 
                    new ComponenteDistribuidorGeneradorUnitario(objContenedorBase, objTipoDato.getCanonicalName(), heredado, previsualizar);

            ComponenteGeneradoInterno objComponenteGenerador = GeneradorComponentes.crearComponenteGeneradoInterno(objComponenteBase);        

            objComponente.setObjComponenteGenerador(objComponenteGenerador);

            objComponente.seteOrigen(TipoOrigen.eBase);

            objComponente.setId(objContenedorBase.getId());

            objComponente.setContenedor(objContenedorBase.isContenedor());
            objComponente.setFinish(false);

            objComponente.setHeight(objContenedorBase.getHeight());
            objComponente.setWidth(objContenedorBase.getWidth());        

            objComponente.setIdConstructor(objContenedorBase.getConstructor());        
            //objComponente.setObjConstructores(crearConstructores(objContenedorBase.getObjConstructoresBase()));

            objComponente.setStrComponentesGenerados(objComponenteBase.getStrObjetos());        
            objComponente.setStrOyentes(objContenedorBase.getStrOyentes());

            if(objContenedorBase.getObjGridBagConstraints() != null){
                objComponente.setObjGridBagConstraints(objContenedorBase.getObjGridBagConstraints());
            }

            objComponente.setInicializacion(objComponenteBase.isInicializacion());
            if(objComponente.isInicializacion()){
                objComponente.setObjInicializaciones(crearInicializaciones(objComponente.getObjComponenteGenerador()));
            }

            if(!objComponente.getStrOyentes().isEmpty()){
                objComponente.setObjOyentes(crearOyentes(objComponente));
            }       

            if(generados && !objComponente.getStrComponentesGenerados().isEmpty()){     
                objComponente.setObjComponentesGenerados(crearComponentesGenerados(objComponente));
                objComponente.cargarPlantillasDesdeArchivoProperties(crearPlantillas(objComponente.getObjComponenteGenerador()));
            }
            else{
                //aqui se debe evaluar que exista la menos una plantilla para el componente
                objComponente.cargarPlantillasDesdeArchivoProperties(crearPlantillas(objComponente.getObjComponenteGenerador()));
            }

            if(objContenedorBase.tienePropiedadesDisponibles()){
                ArrayList<Propiedad> objPropiedadesDisponibles = GeneradorComponentes.inicializarPropiedadesDisponiblesComponenteBase(objComponente);
                objComponente.setObjPropiedadesDisponibles(objPropiedadesDisponibles);
            } 

            if(objContenedorBase.tienePropiedadesInternas()){
                ArrayList<Propiedad> objPropiedadesInternas = GeneradorComponentes.crearPropiedadesInternas(objComponente);
                objComponente.setObjPropiedadesInternas(objPropiedadesInternas);        
            }

            System.out.println(objComponente);
            return objComponente;
        }catch(java.lang.NullPointerException ex){}
        return null;
    }   
    
    /**
     * @DefinicionMetodo
     * @param objComponenteBase @DefinicionParametro
     * @param objTipoDato @DefinicionParametro
@DefinicionParametro
     * @param heredado @DefinicionParametro
     * @param previsualizar @DefinicionParametro
     * @param generados @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ComponenteDistribuidorGeneradorString crearComponenteGeneradorString(ComponenteBaseStandar objComponenteBase, Class objTipoDato, boolean heredado, boolean previsualizar, boolean generados){
        try{
            ComponenteBaseStandar objContenedorBase = GeneradorComponentes.objPatronRepresentacionBase.getContenedorBaseUnitario();

            ComponenteDistribuidorGeneradorString objComponente = 
                    new ComponenteDistribuidorGeneradorString(objContenedorBase, objTipoDato.getCanonicalName(), heredado, previsualizar);

            ComponenteGeneradoInterno objComponenteGenerador = GeneradorComponentes.crearComponenteGeneradoInterno(objComponenteBase);        

            objComponente.setObjComponenteGenerador(objComponenteGenerador);

            objComponente.seteOrigen(TipoOrigen.eBase);

            objComponente.setId(objContenedorBase.getId());

            objComponente.setContenedor(objContenedorBase.isContenedor());
            objComponente.setFinish(false);

            objComponente.setHeight(objContenedorBase.getHeight());
            objComponente.setWidth(objContenedorBase.getWidth());        

            objComponente.setIdConstructor(objContenedorBase.getConstructor());        
            //objComponente.setObjConstructores(crearConstructores(objContenedorBase.getObjConstructoresBase()));

            objComponente.setStrComponentesGenerados(objComponenteBase.getStrObjetos());        
            objComponente.setStrOyentes(objContenedorBase.getStrOyentes());

            if(objContenedorBase.getObjGridBagConstraints() != null){
                objComponente.setObjGridBagConstraints(objContenedorBase.getObjGridBagConstraints());
            }

            objComponente.setInicializacion(objComponenteBase.isInicializacion());
            if(objComponente.isInicializacion()){
                objComponente.setObjInicializaciones(crearInicializaciones(objComponente.getObjComponenteGenerador()));
            }

            if(!objComponente.getStrOyentes().isEmpty()){
                objComponente.setObjOyentes(crearOyentes(objComponente));
            }       

            if(generados && !objComponente.getStrComponentesGenerados().isEmpty()){     
                objComponente.setObjComponentesGenerados(crearComponentesGenerados(objComponente));
                objComponente.cargarPlantillasDesdeArchivoProperties(crearPlantillas(objComponente.getObjComponenteGenerador()));
            }
            else{
                //aqui se debe evaluar que exista la menos una plantilla para el componente
                objComponente.cargarPlantillasDesdeArchivoProperties(crearPlantillas(objComponente.getObjComponenteGenerador()));
            }

            if(objContenedorBase.tienePropiedadesDisponibles()){
                ArrayList<Propiedad> objPropiedadesDisponibles = GeneradorComponentes.inicializarPropiedadesDisponiblesComponenteBase(objComponente);
                objComponente.setObjPropiedadesDisponibles(objPropiedadesDisponibles);
            } 

            if(objContenedorBase.tienePropiedadesInternas()){
                ArrayList<Propiedad> objPropiedadesInternas = GeneradorComponentes.crearPropiedadesInternas(objComponente);
                objComponente.setObjPropiedadesInternas(objPropiedadesInternas);        
            }

            System.out.println(objComponente);
            return objComponente;
        }catch(java.lang.NullPointerException ex){}
        return null;
    }
    
    /**
     * @DefinicionMetodo
     * @param objComponenteBase @DefinicionParametro
     * @param objTipoDato @DefinicionParametro
     * @param generados @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ComponenteDistribuidorGeneradorEnum crearComponenteGeneradorEnum(ComponenteBaseStandar objComponenteBase, Class objTipoDato, boolean generados){
       if(objComponenteBase != null){
            return crearComponenteGeneradorEnum(objComponenteBase, objTipoDato, false, false, generados);                
        }else{
            UtilRender.printlnConsole("Objeto Tipo Dato Reflexión Nulo.", UtilRender.ACTION_NORMAL, false);            
             return null;
        }
    }
    
    /**
     * @DefinicionMetodo
     * @param objComponenteBase @DefinicionParametro
     * @param objTipoDato @DefinicionParametro
     * @param generados @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ComponenteDistribuidorGeneradorVinculador crearComponenteGeneradorVinculador(ComponenteBaseStandar objComponenteBase, Class objTipoDato, boolean generados){
      if(objComponenteBase != null){
            return crearComponenteGeneradorVinculador(objComponenteBase, objTipoDato, false, false, generados);                
       }else{
            UtilRender.printlnConsole("Objeto Componente BAse Nulo.", UtilRender.ACTION_NORMAL, false);            
        return null;  
      }
      
    }
    
    /**
     * 
     * @param objComponentePersonalizadoBase
     * @param strClassPathTipoDato 
     * @return @DefinicionReturn
     */
    public static ComponenteDistribuidorGeneradorEnum crearComponenteGeneradorEnum(ComponenteBasePersonalizado objComponentePersonalizadoBase, String strClassPathTipoDato){
//        try{
        if(objComponentePersonalizadoBase != null){
                int id = Integer.parseInt(objComponentePersonalizadoBase.getGenerador());
                ComponenteBaseStandar objComponenteBase = GeneradorComponentes.devolverComponenteBasePorId(id);        
                ComponenteDistribuidorGeneradorEnum objComponente = 
                        crearComponenteGeneradorEnumPersonalizado(
                        objComponenteBase, 
                        strClassPathTipoDato,                 
                        false, 
                        false, 
                        objComponenteBase.getStrObjetos().isEmpty() ? false : true); 

                objComponente.seteOrigen(TipoOrigen.ePersonalizado);                

                objComponente.setInicializacion(objComponentePersonalizadoBase.isInicializacion());
                if(objComponente.isInicializacion()){
                    objComponente.setObjInicializaciones(crearInicializaciones(objComponentePersonalizadoBase, objComponente));
                }       

                objComponente.setStrComponentesGenerados(objComponentePersonalizadoBase.getGenerados());        
                if(!objComponente.getStrComponentesGenerados().isEmpty()){                 
                    objComponente.setObjComponentesGenerados(crearComponentesGenerados(objComponente));
                    objComponente.cargarPlantillasDesdeArchivoProperties(crearPlantillasPersonalizadas(objComponentePersonalizadoBase));
                }

                if(objComponentePersonalizadoBase.isInicializacion()){
                    ArrayList<Propiedad> objPropiedades = inicializarPropiedadesPersonalizadas(objComponente);
                    objComponente.setObjPropiedadesDisponibles(objPropiedades);        
                }
                return objComponente;
    //        }
    //        catch(java.lang.NullPointerException ex) {
    //            Logger.getLogger(GeneradorComponentes.class.getName()).log(Level.SEVERE, null, ex);
    //        }
    //        return null;
        }else{
            UtilRender.printlnConsole("Componente personalizado Nulo.", UtilRender.ACTION_NORMAL, false);            
            return null;
        }
    }
    
    /**
     * 
     * @param objComponentePersonalizadoBase
     * @param strClassPathTipoDato 
     * @return @DefinicionReturn
     */
    public static ComponenteDistribuidorGeneradorVinculador crearComponenteGeneradorVinculador(ComponenteBasePersonalizado objComponentePersonalizadoBase, String strClassPathTipoDato){
        try{
            int id = Integer.parseInt(objComponentePersonalizadoBase.getGenerador());
            ComponenteBaseStandar objComponenteBase = GeneradorComponentes.devolverComponenteBasePorId(id);        
            ComponenteDistribuidorGeneradorVinculador objComponente = 
                    crearComponenteGeneradorVinculadorPersonalizado(
                    objComponenteBase, 
                    strClassPathTipoDato,                 
                    false, 
                    false, 
                    objComponenteBase.getStrObjetos().isEmpty() ? false : true); 

            objComponente.seteOrigen(TipoOrigen.ePersonalizado);                

            objComponente.setInicializacion(objComponentePersonalizadoBase.isInicializacion());
            if(objComponente.isInicializacion()){
                objComponente.setObjInicializaciones(crearInicializaciones(objComponentePersonalizadoBase, objComponente));
            }       

            objComponente.setStrComponentesGenerados(objComponentePersonalizadoBase.getGenerados());        
            if(!objComponente.getStrComponentesGenerados().isEmpty()){                 
                objComponente.setObjComponentesGenerados(crearComponentesGenerados(objComponente));
                objComponente.cargarPlantillasDesdeArchivoProperties(crearPlantillasPersonalizadas(objComponentePersonalizadoBase));
            }

            if(objComponentePersonalizadoBase.isInicializacion()){
                ArrayList<Propiedad> objPropiedades = inicializarPropiedadesPersonalizadas(objComponente);
                objComponente.setObjPropiedadesDisponibles(objPropiedades);        
            }
            return objComponente;
        }catch(java.lang.NullPointerException ex){}
        return null;
    }
    
    /**
     * @DefinicionMetodo
     * @param objComponenteBase @DefinicionParametro
     * @param objTipoDato @DefinicionParametro
@DefinicionParametro
     * @param heredado @DefinicionParametro
     * @param previsualizar @DefinicionParametro
     * @param generados @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ComponenteDistribuidorGeneradorEnum crearComponenteGeneradorEnum(ComponenteBaseStandar objComponenteBase, Class objTipoDato, boolean heredado, boolean previsualizar, boolean generados){
//        try{
        if(objComponenteBase != null){
            ComponenteBaseStandar objContenedorBase = GeneradorComponentes.objPatronRepresentacionBase.getContenedorBaseUnitario();

            ComponenteDistribuidorGeneradorEnum objComponente = 
                    new ComponenteDistribuidorGeneradorEnum(objContenedorBase, objTipoDato.getCanonicalName(), heredado, previsualizar);

            ComponenteGeneradoInterno objComponenteGenerador = GeneradorComponentes.crearComponenteGeneradoInterno(objComponenteBase);        

            objComponente.setObjComponenteGenerador(objComponenteGenerador);

            objComponente.seteOrigen(TipoOrigen.eBase);

            objComponente.setId(objContenedorBase.getId());

            objComponente.setContenedor(objContenedorBase.isContenedor());
            objComponente.setFinish(false);

            objComponente.setHeight(objContenedorBase.getHeight());
            objComponente.setWidth(objContenedorBase.getWidth());        

            objComponente.setIdConstructor(objContenedorBase.getConstructor());        
            //objComponente.setObjConstructores(crearConstructores(objContenedorBase.getObjConstructoresBase()));

            objComponente.setStrComponentesGenerados(objComponenteBase.getStrObjetos());        
            objComponente.setStrOyentes(objContenedorBase.getStrOyentes());

            if(objContenedorBase.getObjGridBagConstraints() != null){
                objComponente.setObjGridBagConstraints(objContenedorBase.getObjGridBagConstraints());
            }

            objComponente.setInicializacion(objComponenteBase.isInicializacion());
            if(objComponente.isInicializacion()){
                objComponente.setObjInicializaciones(crearInicializaciones(objComponente.getObjComponenteGenerador()));
            }

            if(!objComponente.getStrOyentes().isEmpty()){
                objComponente.setObjOyentes(crearOyentes(objComponente));
            }       

            if(generados && !objComponente.getStrComponentesGenerados().isEmpty()){     
                objComponente.setObjComponentesGenerados(crearComponentesGenerados(objComponente));
                objComponente.cargarPlantillasDesdeArchivoProperties(crearPlantillas(objComponente.getObjComponenteGenerador()));
            }
            else{
                //aqui se debe evaluar que exista la menos una plantilla para el componente
                objComponente.cargarPlantillasDesdeArchivoProperties(crearPlantillas(objComponente.getObjComponenteGenerador()));
            }

            if(objContenedorBase.tienePropiedadesDisponibles()){
                ArrayList<Propiedad> objPropiedadesDisponibles = GeneradorComponentes.inicializarPropiedadesDisponiblesComponenteBase(objComponente);
                objComponente.setObjPropiedadesDisponibles(objPropiedadesDisponibles);
            } 

            if(objContenedorBase.tienePropiedadesInternas()){
                ArrayList<Propiedad> objPropiedadesInternas = GeneradorComponentes.crearPropiedadesInternas(objComponente);
                objComponente.setObjPropiedadesInternas(objPropiedadesInternas);        
            }

            System.out.println(objComponente);
            return objComponente;
        }else{
            UtilRender.printlnConsole("Objeto Componente BAse Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
        return null;
    }    
    
    /**
     * @DefinicionMetodo
     * @param objComponenteBase @DefinicionParametro
     * @param objTipoDato @DefinicionParametro
@DefinicionParametro
     * @param heredado @DefinicionParametro
     * @param previsualizar @DefinicionParametro
     * @param generados @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ComponenteDistribuidorGeneradorVinculador crearComponenteGeneradorVinculador(ComponenteBaseStandar objComponenteBase, Class objTipoDato, boolean heredado, boolean previsualizar, boolean generados){
//        try{
        if(objComponenteBase != null){
            ComponenteBaseStandar objContenedorBase = GeneradorComponentes.objPatronRepresentacionBase.getContenedorBaseUnitario();

            ComponenteDistribuidorGeneradorVinculador objComponente = 
                    new ComponenteDistribuidorGeneradorVinculador(objContenedorBase, objTipoDato.getCanonicalName(), heredado, previsualizar);

            ComponenteGeneradoInterno objComponenteGenerador = GeneradorComponentes.crearComponenteGeneradoInterno(objComponenteBase);        

            objComponente.setObjComponenteGenerador(objComponenteGenerador);

            objComponente.seteOrigen(TipoOrigen.eBase);

            objComponente.setId(objContenedorBase.getId());

            objComponente.setContenedor(objContenedorBase.isContenedor());
            objComponente.setFinish(false);

            objComponente.setHeight(objContenedorBase.getHeight());
            objComponente.setWidth(objContenedorBase.getWidth());        

            objComponente.setIdConstructor(objContenedorBase.getConstructor());        
            //objComponente.setObjConstructores(crearConstructores(objContenedorBase.getObjConstructoresBase()));

            objComponente.setStrComponentesGenerados(objComponenteBase.getStrObjetos());        
            objComponente.setStrOyentes(objContenedorBase.getStrOyentes());

            if(objContenedorBase.getObjGridBagConstraints() != null){
                objComponente.setObjGridBagConstraints(objContenedorBase.getObjGridBagConstraints());
            }

            objComponente.setInicializacion(objComponenteBase.isInicializacion());
            if(objComponente.isInicializacion()){
                objComponente.setObjInicializaciones(crearInicializaciones(objComponente.getObjComponenteGenerador()));
            }

            if(!objComponente.getStrOyentes().isEmpty()){
                objComponente.setObjOyentes(crearOyentes(objComponente));
            }       

            if(generados && !objComponente.getStrComponentesGenerados().isEmpty()){     
                objComponente.setObjComponentesGenerados(crearComponentesGenerados(objComponente));
                objComponente.cargarPlantillasDesdeArchivoProperties(crearPlantillas(objComponente.getObjComponenteGenerador()));
            }
            else{
                //aqui se debe evaluar que exista la menos una plantilla para el componente
                objComponente.cargarPlantillasDesdeArchivoProperties(crearPlantillas(objComponente.getObjComponenteGenerador()));
            }

            if(objContenedorBase.tienePropiedadesDisponibles()){
                ArrayList<Propiedad> objPropiedadesDisponibles = GeneradorComponentes.inicializarPropiedadesDisponiblesComponenteBase(objComponente);
                objComponente.setObjPropiedadesDisponibles(objPropiedadesDisponibles);
            } 

            if(objContenedorBase.tienePropiedadesInternas()){
                ArrayList<Propiedad> objPropiedadesInternas = GeneradorComponentes.crearPropiedadesInternas(objComponente);
                objComponente.setObjPropiedadesInternas(objPropiedadesInternas);        
            }

            System.out.println(objComponente);
            return objComponente;
        }else{
            UtilRender.printlnConsole("Objeto Componente Base Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
        return null;
    }
    
    /**
     * @DefinicionMetodo
     * @param objComponenteBase @DefinicionParametro
     * @param strClassPathTipoDato @DefinicionParametro
@DefinicionParametro
     * @param heredado @DefinicionParametro
     * @param previsualizar @DefinicionParametro
     * @param generados @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ComponenteDistribuidorGeneradorEnum crearComponenteGeneradorEnumPersonalizado(ComponenteBaseStandar objComponenteBase, String strClassPathTipoDato, boolean heredado, boolean previsualizar, boolean generados){
//        try{
        if(objComponenteBase != null){
        
            ComponenteBaseStandar objContenedorBase = GeneradorComponentes.objPatronRepresentacionBase.getContenedorBaseUnitario();

            ComponenteDistribuidorGeneradorEnum objComponente = new ComponenteDistribuidorGeneradorEnum(objContenedorBase, strClassPathTipoDato, heredado, previsualizar);        

            ComponenteGeneradoInterno objComponenteGenerador = GeneradorComponentes.crearComponenteGeneradoInterno(objComponenteBase);        

            objComponente.setObjComponenteGenerador(objComponenteGenerador);

            objComponente.seteOrigen(TipoOrigen.ePersonalizado);

            objComponente.setId(objComponenteBase.getId());

            objComponente.setContenedor(objContenedorBase.isContenedor());
            objComponente.setFinish(false);

            objComponente.setHeight(objContenedorBase.getHeight());
            objComponente.setWidth(objContenedorBase.getWidth());        

            objComponente.setIdConstructor(objContenedorBase.getConstructor());        
            //objComponente.setObjConstructores(crearConstructores(objContenedorBase.getObjConstructoresBase()));

            objComponente.setStrComponentesGenerados(objComponenteBase.getStrObjetos());        
            objComponente.setStrOyentes(objContenedorBase.getStrOyentes());

            if(objComponenteBase.getObjGridBagConstraints() != null){
                objComponente.setObjGridBagConstraints(objComponenteBase.getObjGridBagConstraints());
            }

            objComponente.setInicializacion(objComponenteBase.isInicializacion());
            if(objComponente.isInicializacion()){
                objComponente.setObjInicializaciones(crearInicializaciones(objComponente.getObjComponenteGenerador()));
            }

            if(!objComponente.getStrOyentes().isEmpty()){
                objComponente.setObjOyentes(crearOyentes(objComponente));
            }       

            if(generados && !objComponente.getStrComponentesGenerados().isEmpty()){     
                objComponente.setObjComponentesGenerados(crearComponentesGenerados(objComponente));
                objComponente.cargarPlantillasDesdeArchivoProperties(crearPlantillas(objComponente.getObjComponenteGenerador()));
            }
            else{
                //aqui se debe evaluar que exista la menos una plantilla para el componente
                objComponente.cargarPlantillasDesdeArchivoProperties(crearPlantillas(objComponente.getObjComponenteGenerador()));
            }    

            if(objComponenteBase.tienePropiedadesDisponibles()){
                ArrayList<Propiedad> objPropiedadesDisponibles = GeneradorComponentes.inicializarPropiedadesDisponiblesComponenteBase(objComponente);
                objComponente.setObjPropiedadesDisponibles(objPropiedadesDisponibles);
            } 

            if(objComponenteBase.tienePropiedadesInternas()){
                ArrayList<Propiedad> objPropiedadesInternas = GeneradorComponentes.crearPropiedadesInternas(objComponente);
                objComponente.setObjPropiedadesInternas(objPropiedadesInternas);        
            }

            System.out.println(objComponente);
            return objComponente;
        }else{
            UtilRender.printlnConsole("Objeto Componente Base Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
        return null;
    }   
    
    /**
     * @DefinicionMetodo
     * @param objComponenteBase @DefinicionParametro
     * @param strClassPathTipoDato @DefinicionParametro
@DefinicionParametro
     * @param heredado @DefinicionParametro
     * @param previsualizar @DefinicionParametro
     * @param generados @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ComponenteDistribuidorGeneradorVinculador crearComponenteGeneradorVinculadorPersonalizado(ComponenteBaseStandar objComponenteBase, String strClassPathTipoDato, boolean heredado, boolean previsualizar, boolean generados){
//        try{
        if(objComponenteBase != null){
        
            ComponenteBaseStandar objContenedorBase = GeneradorComponentes.objPatronRepresentacionBase.getContenedorBaseUnitario();

            ComponenteDistribuidorGeneradorVinculador objComponente = new ComponenteDistribuidorGeneradorVinculador(objContenedorBase, strClassPathTipoDato, heredado, previsualizar);        

            ComponenteGeneradoInterno objComponenteGenerador = GeneradorComponentes.crearComponenteGeneradoInterno(objComponenteBase);        

            objComponente.setObjComponenteGenerador(objComponenteGenerador);

            objComponente.seteOrigen(TipoOrigen.ePersonalizado);

            objComponente.setId(objComponenteBase.getId());

            objComponente.setContenedor(objContenedorBase.isContenedor());
            objComponente.setFinish(false);

            objComponente.setHeight(objContenedorBase.getHeight());
            objComponente.setWidth(objContenedorBase.getWidth());        

            objComponente.setIdConstructor(objContenedorBase.getConstructor());        
            //objComponente.setObjConstructores(crearConstructores(objContenedorBase.getObjConstructoresBase()));

            objComponente.setStrComponentesGenerados(objComponenteBase.getStrObjetos());        
            objComponente.setStrOyentes(objContenedorBase.getStrOyentes());

            if(objComponenteBase.getObjGridBagConstraints() != null){
                objComponente.setObjGridBagConstraints(objComponenteBase.getObjGridBagConstraints());
            }

            objComponente.setInicializacion(objComponenteBase.isInicializacion());
            if(objComponente.isInicializacion()){
                objComponente.setObjInicializaciones(crearInicializaciones(objComponente.getObjComponenteGenerador()));
            }

            if(!objComponente.getStrOyentes().isEmpty()){
                objComponente.setObjOyentes(crearOyentes(objComponente));
            }       

            if(generados && !objComponente.getStrComponentesGenerados().isEmpty()){     
                objComponente.setObjComponentesGenerados(crearComponentesGenerados(objComponente));
                objComponente.cargarPlantillasDesdeArchivoProperties(crearPlantillas(objComponente.getObjComponenteGenerador()));
            }
            else{
                //aqui se debe evaluar que exista la menos una plantilla para el componente
                objComponente.cargarPlantillasDesdeArchivoProperties(crearPlantillas(objComponente.getObjComponenteGenerador()));
            }    

            if(objComponenteBase.tienePropiedadesDisponibles()){
                ArrayList<Propiedad> objPropiedadesDisponibles = GeneradorComponentes.inicializarPropiedadesDisponiblesComponenteBase(objComponente);
                objComponente.setObjPropiedadesDisponibles(objPropiedadesDisponibles);
            } 

            if(objComponenteBase.tienePropiedadesInternas()){
                ArrayList<Propiedad> objPropiedadesInternas = GeneradorComponentes.crearPropiedadesInternas(objComponente);
                objComponente.setObjPropiedadesInternas(objPropiedadesInternas);        
            }

            System.out.println(objComponente);
            return objComponente;
        }else{
            UtilRender.printlnConsole("Objeto Componente Base Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
        return null;
    }    
    
    /**
     * @DefinicionMetodo
     * @param objComponenteBase @DefinicionParametro
     * @param strClassPathTipoDato @DefinicionParametro
@DefinicionParametro
     * @param heredado @DefinicionParametro
     * @param previsualizar @DefinicionParametro
     * @param generados @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ComponenteDistribuidorGeneradorUnitario crearComponenteGeneradorUnitarioPersonalizado(ComponenteBaseStandar objComponenteBase, String strClassPathTipoDato, boolean heredado, boolean previsualizar, boolean generados){
//        try{
        if(objComponenteBase != null){
        
            ComponenteBaseStandar objContenedorBase = GeneradorComponentes.objPatronRepresentacionBase.getContenedorBaseUnitario();

            ComponenteDistribuidorGeneradorUnitario objComponente = new ComponenteDistribuidorGeneradorUnitario(objContenedorBase, strClassPathTipoDato, heredado, previsualizar);        

            ComponenteGeneradoInterno objComponenteGenerador = GeneradorComponentes.crearComponenteGeneradoInterno(objComponenteBase);        

            objComponente.setObjComponenteGenerador(objComponenteGenerador);

            objComponente.seteOrigen(TipoOrigen.ePersonalizado);

            objComponente.setId(objComponenteBase.getId());

            objComponente.setContenedor(objContenedorBase.isContenedor());
            objComponente.setFinish(false);

            objComponente.setHeight(objContenedorBase.getHeight());
            objComponente.setWidth(objContenedorBase.getWidth());        

            objComponente.setIdConstructor(objContenedorBase.getConstructor());        
            //objComponente.setObjConstructores(crearConstructores(objContenedorBase.getObjConstructoresBase()));

            objComponente.setStrComponentesGenerados(objComponenteBase.getStrObjetos());        
            objComponente.setStrOyentes(objComponenteBase.getStrOyentes());

            if(objComponenteBase.getObjGridBagConstraints() != null){
                objComponente.setObjGridBagConstraints(objComponenteBase.getObjGridBagConstraints());
            }

            objComponente.setInicializacion(objComponenteBase.isInicializacion());
            if(objComponente.isInicializacion()){
                objComponente.setObjInicializaciones(crearInicializaciones(objComponente.getObjComponenteGenerador()));
            }

            if(!objComponente.getStrOyentes().isEmpty()){
                objComponente.setObjOyentes(crearOyentes(objComponente));
            }       

            if(generados && !objComponente.getStrComponentesGenerados().isEmpty()){     
                objComponente.setObjComponentesGenerados(crearComponentesGenerados(objComponente));
                objComponente.cargarPlantillasDesdeArchivoProperties(crearPlantillas(objComponente.getObjComponenteGenerador()));
            }
            else{
                //aqui se debe evaluar que exista la menos una plantilla para el componente
                objComponente.cargarPlantillasDesdeArchivoProperties(crearPlantillas(objComponente.getObjComponenteGenerador()));
            }    

            if(objComponenteBase.tienePropiedadesDisponibles()){
                ArrayList<Propiedad> objPropiedadesDisponibles = GeneradorComponentes.inicializarPropiedadesDisponiblesComponenteBase(objComponente);
                objComponente.setObjPropiedadesDisponibles(objPropiedadesDisponibles);
            } 

            if(objComponenteBase.tienePropiedadesInternas()){
                ArrayList<Propiedad> objPropiedadesInternas = GeneradorComponentes.crearPropiedadesInternas(objComponente);
                objComponente.setObjPropiedadesInternas(objPropiedadesInternas);        
            }

            System.out.println(objComponente);
            return objComponente;
        }else{
            UtilRender.printlnConsole("Objeto Componente Base Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
        return null;
    }
    
    /**
     * @DefinicionMetodo
     * @param objComponenteBase @DefinicionParametro
     * @param strClassPathTipoDato @DefinicionParametro
@DefinicionParametro
     * @param heredado @DefinicionParametro
     * @param previsualizar @DefinicionParametro
     * @param generados @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ComponenteDistribuidorGeneradorString crearComponenteGeneradorStringPersonalizado(ComponenteBaseStandar objComponenteBase, String strClassPathTipoDato, boolean heredado, boolean previsualizar, boolean generados){
//        try{
        if(objComponenteBase != null){
        
            ComponenteBaseStandar objContenedorBase = GeneradorComponentes.objPatronRepresentacionBase.getContenedorBaseUnitario();

            ComponenteDistribuidorGeneradorString objComponente = new ComponenteDistribuidorGeneradorString(objContenedorBase, strClassPathTipoDato, heredado, previsualizar);        

            ComponenteGeneradoInterno objComponenteGenerador = GeneradorComponentes.crearComponenteGeneradoInterno(objComponenteBase);        

            objComponente.setObjComponenteGenerador(objComponenteGenerador);

            objComponente.seteOrigen(TipoOrigen.ePersonalizado);

            objComponente.setId(objComponenteBase.getId());

            objComponente.setContenedor(objContenedorBase.isContenedor());
            objComponente.setFinish(false);

            objComponente.setHeight(objContenedorBase.getHeight());
            objComponente.setWidth(objContenedorBase.getWidth());        

            objComponente.setIdConstructor(objContenedorBase.getConstructor());        
            //objComponente.setObjConstructores(crearConstructores(objContenedorBase.getObjConstructoresBase()));

            objComponente.setStrComponentesGenerados(objComponenteBase.getStrObjetos());        
            objComponente.setStrOyentes(objComponenteBase.getStrOyentes());

            if(objComponenteBase.getObjGridBagConstraints() != null){
                objComponente.setObjGridBagConstraints(objComponenteBase.getObjGridBagConstraints());
            }

            objComponente.setInicializacion(objComponenteBase.isInicializacion());
            if(objComponente.isInicializacion()){
                objComponente.setObjInicializaciones(crearInicializaciones(objComponente.getObjComponenteGenerador()));
            }

            if(!objComponente.getStrOyentes().isEmpty()){
                objComponente.setObjOyentes(crearOyentes(objComponente));
            }       

            if(generados && !objComponente.getStrComponentesGenerados().isEmpty()){     
                objComponente.setObjComponentesGenerados(crearComponentesGenerados(objComponente));
                objComponente.cargarPlantillasDesdeArchivoProperties(crearPlantillas(objComponente.getObjComponenteGenerador()));
            }
            else{
                //aqui se debe evaluar que exista la menos una plantilla para el componente
                objComponente.cargarPlantillasDesdeArchivoProperties(crearPlantillas(objComponente.getObjComponenteGenerador()));
            }    

            if(objComponenteBase.tienePropiedadesDisponibles()){
                ArrayList<Propiedad> objPropiedadesDisponibles = GeneradorComponentes.inicializarPropiedadesDisponiblesComponenteBase(objComponente);
                objComponente.setObjPropiedadesDisponibles(objPropiedadesDisponibles);
            } 

            if(objComponenteBase.tienePropiedadesInternas()){
                ArrayList<Propiedad> objPropiedadesInternas = GeneradorComponentes.crearPropiedadesInternas(objComponente);
                objComponente.setObjPropiedadesInternas(objPropiedadesInternas);        
            }

            System.out.println(objComponente);
            return objComponente;
        }else{
            UtilRender.printlnConsole("Objeto Componente base Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
        return null;
    }

    /**
     * @DefinicionMetodo
     * @param objComponenteBase @DefinicionParametro
     * @param independiente @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ComponenteGeneradoSimple crearComponenteGeneradoSimple(ComponenteBaseStandar objComponenteBase, boolean independiente){
        try{
            ComponenteGeneradoSimple objComponente = new ComponenteGeneradoSimple(objComponenteBase, false, false, independiente);

            objComponente.setId(objComponenteBase.getId());

            objComponente.setContenedor(objComponenteBase.isContenedor());
            objComponente.setFinish(false);

            objComponente.setHeight(objComponenteBase.getHeight());
            objComponente.setWidth(objComponenteBase.getWidth());        

            objComponente.setIdConstructor(objComponenteBase.getConstructor());        
            objComponente.setObjConstructores(crearConstructores(objComponenteBase.getObjConstructoresBase()));        

            if(objComponenteBase.getObjGridBagConstraints() != null){
                objComponente.setObjGridBagConstraints(objComponenteBase.getObjGridBagConstraints());
            }

            objComponente.setStrOyentes(objComponenteBase.getStrOyentes());
            if(!objComponente.getStrOyentes().isEmpty()){
                objComponente.setObjOyentes(crearOyentes(objComponente));
            }

            if(objComponenteBase.tienePropiedadesDisponibles()){
                ArrayList<Propiedad> objPropiedadesDisponibles = GeneradorComponentes.inicializarPropiedadesDisponiblesComponenteBase(objComponente);
                objComponente.setObjPropiedadesDisponibles(objPropiedadesDisponibles);
            } 

            if(objComponenteBase.tienePropiedadesInternas()){
                ArrayList<Propiedad> objPropiedadesInternas = GeneradorComponentes.crearPropiedadesInternas(objComponente);
                objComponente.setObjPropiedadesInternas(objPropiedadesInternas);        
            } 

            if(independiente){
                //objComponente.setObjPlantillaComponenteAutomatica(crearPlantillaComponenteDefault(objComponente));
                //objComponente.setObjPlantillaComponenteAutomatica(crearPlantillaComponenteDefault(objComponente));
            }

            System.out.println(objComponente);
            return objComponente;
        }catch(java.lang.Exception ex){}
        return null;
    }
    
    /**
     * @DefinicionMetodo
     * @param objComponenteBase @DefinicionParametro
@DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ComponenteGeneradoInterno crearComponenteGeneradoInterno(ComponenteBaseStandar objComponenteBase){
        try{        
            ComponenteGeneradoInterno objComponente = new ComponenteGeneradoInterno(objComponenteBase, false, false);

            objComponente.setId(objComponenteBase.getId());

            objComponente.setContenedor(objComponenteBase.isContenedor());
            objComponente.setFinish(false);

            objComponente.setHeight(objComponenteBase.getHeight());
            objComponente.setWidth(objComponenteBase.getWidth());        

            objComponente.setIdConstructor(objComponenteBase.getConstructor());        
            objComponente.setObjConstructores(crearConstructores(objComponenteBase.getObjConstructoresBase()));        

            if(objComponenteBase.getObjGridBagConstraints() != null){
                objComponente.setObjGridBagConstraints(objComponenteBase.getObjGridBagConstraints());
            }

            objComponente.setStrOyentes(objComponenteBase.getStrOyentes());
            if(!objComponente.getStrOyentes().isEmpty()){
                objComponente.setObjOyentes(crearOyentes(objComponente));
            }

            if(objComponenteBase.tienePropiedadesDisponibles()){
                ArrayList<Propiedad> objPropiedadesDisponibles = GeneradorComponentes.inicializarPropiedadesDisponiblesComponenteBase(objComponente);
                objComponente.setObjPropiedadesDisponibles(objPropiedadesDisponibles);
            } 

            if(objComponenteBase.tienePropiedadesInternas()){
                ArrayList<Propiedad> objPropiedadesInternas = GeneradorComponentes.crearPropiedadesInternas(objComponente);
                objComponente.setObjPropiedadesInternas(objPropiedadesInternas);        
            }        

            System.out.println(objComponente);
            return objComponente;
        }catch(java.lang.Exception ex){}
        return null;
    }
    
    /**
     * @DefinicionMetodo
     * @param objComponente @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static PlantillaComponente crearPlantillaComponenteDefault(Componente objComponente){
        try{
            PlantillaComponente objPlantillaComponenteDefault = new PlantillaComponente();
            objPlantillaComponenteDefault.setGenerador(false);
            objPlantillaComponenteDefault.setHeight(objComponente.getHeight());
            objPlantillaComponenteDefault.setId(objComponente.getId());
            objPlantillaComponenteDefault.setIdComponente(objComponente.getIdClaseComponente());
            objPlantillaComponenteDefault.setIdConstructor(objComponente.getIdConstructor());
            objPlantillaComponenteDefault.setIdPlantilla(0);                
            objPlantillaComponenteDefault.setIncluido(false);
            objPlantillaComponenteDefault.setWidth(objComponente.getWidth());
            objPlantillaComponenteDefault.setX(0);
            objPlantillaComponenteDefault.setY(0);
            objPlantillaComponenteDefault.setZona(0);
            objPlantillaComponenteDefault.setObjGridBagConstraints(objComponente.getObjGridBagConstraints());
            return objPlantillaComponenteDefault;
        }catch(java.lang.Exception ex){}
        return null;
    }
    
    /**
     * @DefinicionMetodo
     * @param objComponente @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static PlantillaComponente crearPlantillaComponente(Componente objComponente){
        try{
            PlantillaComponente objPlantillaComponenteDefault = new PlantillaComponente();
            if(objComponente instanceof ComponenteDistribuidorGenerador){
                objPlantillaComponenteDefault.setGenerador(false);
            }
            else{
                objPlantillaComponenteDefault.setGenerador(true);
            }
            objPlantillaComponenteDefault.setHeight(objComponente.getGridBagConstraintsActiva().gridheight);
            objPlantillaComponenteDefault.setId(0);
            objPlantillaComponenteDefault.setIdComponente(objComponente.getId());
            objPlantillaComponenteDefault.setIdConstructor(objComponente.getIdConstructor());
            objPlantillaComponenteDefault.setIdPlantilla(0);                
            objPlantillaComponenteDefault.setIncluido(true);
            objPlantillaComponenteDefault.setWidth(objComponente.getGridBagConstraintsActiva().gridwidth);
            objPlantillaComponenteDefault.setX(objComponente.getGridBagConstraintsActiva().gridx);
            objPlantillaComponenteDefault.setY(objComponente.getGridBagConstraintsActiva().gridy);
            objPlantillaComponenteDefault.setZona(0);
            objPlantillaComponenteDefault.setObjGridBagConstraints(objComponente.getGridBagConstraintsActiva());
            return objPlantillaComponenteDefault;
        }catch(java.lang.Exception ex){}
        return null;
    }

    /**
     * @DefinicionMetodo
     * @param objComponenteBase @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ComponenteDistribuidorContenedorEspejo crearComponenteContenedorAsistenteEspejo(ComponenteBaseStandar objComponenteBase){
        try{
            ComponenteDistribuidorContenedorEspejo objComponente = new ComponenteDistribuidorContenedorEspejo(objComponenteBase, false, false);
            objComponente.setContenedor(objComponenteBase.isContenedor());
            objComponente.setFinish(false);

            objComponente.setHeight(objComponenteBase.getHeight());
            objComponente.setWidth(objComponenteBase.getWidth());

            objComponente.setId(objComponenteBase.getId());
            objComponente.setIdConstructor(objComponenteBase.getConstructor());

            objComponente.setStrOyentes(objComponenteBase.getStrOyentes());

            if(objComponenteBase.getObjGridBagConstraints() != null){
                objComponente.setObjGridBagConstraints(objComponenteBase.getObjGridBagConstraints());
            }

            if(!objComponente.getStrOyentes().isEmpty()){
                //objComponente.setObjOyentes(crearOyentes(objComponente));
            }

            if(objComponenteBase.tienePropiedadesDisponibles()){
                ArrayList<Propiedad> objPropiedadesDisponibles = GeneradorComponentes.inicializarPropiedadesDisponiblesComponenteBase(objComponente);
                objComponente.setObjPropiedadesDisponibles(objPropiedadesDisponibles);
            } 

            if(objComponenteBase.tienePropiedadesInternas()){
                ArrayList<Propiedad> objPropiedadesInternas = GeneradorComponentes.crearPropiedadesInternas(objComponente);
                objComponente.setObjPropiedadesInternas(objPropiedadesInternas);        
            }

            System.out.println(objComponente);
            return objComponente;
        }catch(java.lang.Exception ex){}
        return null;
    }
    
    /**
     *  @DefinicionMetodo
     * @param objComponenteBase @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ComponenteDistribuidorContenedorLibre crearComponenteContenedorAsistenteLibre(ComponenteBaseStandar objComponenteBase){
        try{
            ComponenteDistribuidorContenedorLibre objComponente = new ComponenteDistribuidorContenedorLibre(objComponenteBase, false, false);
            objComponente.setContenedor(objComponenteBase.isContenedor());
            objComponente.setFinish(false);

            objComponente.setHeight(objComponenteBase.getHeight());
            objComponente.setWidth(objComponenteBase.getWidth());

            objComponente.setId(objComponenteBase.getId());
            objComponente.setIdConstructor(objComponenteBase.getConstructor());

            objComponente.setStrOyentes(objComponenteBase.getStrOyentes());

            if(objComponenteBase.getObjGridBagConstraints() != null){
                objComponente.setObjGridBagConstraints(objComponenteBase.getObjGridBagConstraints());
            }

            if(!objComponente.getStrOyentes().isEmpty()){
                //objComponente.setObjOyentes(crearOyentes(objComponente));
            }

            if(objComponenteBase.tienePropiedadesDisponibles()){
                ArrayList<Propiedad> objPropiedadesDisponibles = GeneradorComponentes.inicializarPropiedadesDisponiblesComponenteBase(objComponente);
                objComponente.setObjPropiedadesDisponibles(objPropiedadesDisponibles);
            } 

            if(objComponenteBase.tienePropiedadesInternas()){
                ArrayList<Propiedad> objPropiedadesInternas = GeneradorComponentes.crearPropiedadesInternas(objComponente);
                objComponente.setObjPropiedadesInternas(objPropiedadesInternas);        
            }

            System.out.println(objComponente);
            return objComponente;
        }catch(java.lang.Exception ex){}
        return null;
    }
    
    /**
     * @DefinicionMetodo
     * @param objComponenteBase @DefinicionParametro
     * @param objMetodo  @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ComponenteDistribuidorGeneradorMetodo crearComponenteGeneradorMetodo(ComponenteBaseStandar objComponenteBase, Method objMetodo){
        try{
            ComponenteDistribuidorGeneradorMetodo objComponente = null;

            if(UtilRepresentacion.isGetter(objMetodo) || UtilRepresentacion.isIs(objMetodo)){
                ComponenteDistribuidorGeneradorMetodoGetter obj = new ComponenteDistribuidorGeneradorMetodoGetter(objComponenteBase, objMetodo.toGenericString(), false, false);
                objComponente = obj;
            }
            else if(UtilRepresentacion.isSetter(objMetodo)){
                ComponenteDistribuidorGeneradorMetodoSetter obj = new ComponenteDistribuidorGeneradorMetodoSetter(objComponenteBase, objMetodo.toGenericString(), false, false);
                objComponente = obj;
            }        

            objComponente.setStrMetodo(objMetodo.getName());
            objComponente.setStrClassPathMetodo(objMetodo.toGenericString());
            objComponente.seteMetodo(UtilRepresentacion.eTipoMetodo(objMetodo));

            objComponente.setContenedor(objComponenteBase.isContenedor());
            objComponente.setFinish(false);

            objComponente.setHeight(objComponenteBase.getHeight());
            objComponente.setWidth(objComponenteBase.getWidth());

            objComponente.setId(objComponenteBase.getId());
            objComponente.setIdConstructor(objComponenteBase.getConstructor());

            objComponente.setStrOyentes(objComponenteBase.getStrOyentes());

            if(objComponenteBase.getObjGridBagConstraints() != null){
                objComponente.setObjGridBagConstraints(objComponenteBase.getObjGridBagConstraints());
            }

    //        objComponente.setInicializacion(objComponenteBase.isInicializacion());
    //        if(objComponente.isInicializacion()){
    //            objComponente.setObjInicializaciones(crearInicializaciones(objComponente));
    //        }

            if(!objComponente.getStrOyentes().isEmpty()){
                //objComponente.setObjOyentes(crearOyentes(objComponente));
            }

            if(objComponenteBase.tienePropiedadesDisponibles()){
                ArrayList<Propiedad> objPropiedadesDisponibles = GeneradorComponentes.inicializarPropiedadesDisponiblesComponenteMetodo(objComponente, objMetodo);
                objComponente.setObjPropiedadesDisponibles(objPropiedadesDisponibles);        
            }

            if(objComponenteBase.tienePropiedadesInternas()){
                ArrayList<Propiedad> objPropiedadesInternas = GeneradorComponentes.crearPropiedadesInternas(objComponente);
                objComponente.setObjPropiedadesInternas(objPropiedadesInternas);        
            }

            System.out.println(objComponente);
            return objComponente;
        }catch(java.lang.Exception ex){}
        return null;
    }
    
    /**
     * 
     * @param objComponenteBase
     * @param objReflexion
     * @return
     */
    public static ComponenteDistribuidorIntegradorMetodo crearComponenteIntegradorMetodo(ComponenteBaseStandar objComponenteBase, ObjetoReflexion objReflexion){
        try{
            ComponenteDistribuidorIntegradorMetodo objComponente = new ComponenteDistribuidorIntegradorMetodo(objComponenteBase, false, false, objReflexion);

            objComponente.setContenedor(objComponenteBase.isContenedor());
            objComponente.setFinish(false);

            objComponente.setHeight(objComponenteBase.getHeight());
            objComponente.setWidth(objComponenteBase.getWidth());

            objComponente.setId(objComponenteBase.getId());
            objComponente.setIdConstructor(objComponenteBase.getConstructor());

            objComponente.setStrOyentes(objComponenteBase.getStrOyentes());  

            if(objComponenteBase.getObjGridBagConstraints() != null){
                objComponente.setObjGridBagConstraints(objComponenteBase.getObjGridBagConstraints());
            }

            if(!objComponente.getStrOyentes().isEmpty()){
                //objComponente.setObjOyentes(crearOyentes(objComponente));
            }

            if(objComponenteBase.tienePropiedadesDisponibles()){            
                ArrayList<Propiedad> objPropiedadesDisponibles = GeneradorComponentes.inicializarPropiedadesDisponiblesComponenteBase(objComponente);
                objComponente.setObjPropiedadesDisponibles(objPropiedadesDisponibles);        
            }

            if(objComponenteBase.tienePropiedadesInternas()){
                ArrayList<Propiedad> objPropiedadesInternas = GeneradorComponentes.crearPropiedadesInternas(objComponente);
                objComponente.setObjPropiedadesInternas(objPropiedadesInternas);        
            }

            System.out.println(objComponente);
            return objComponente;
        }catch(java.lang.Exception ex){}
        return null;
    }
    
    /**
     * 
     * @param objComponenteBase
     * @return
     */
    public static ComponenteDistribuidorIntegradorSimple crearComponenteIntegradorSimple(ComponenteBaseStandar objComponenteBase){
        try{
            ComponenteDistribuidorIntegradorSimple objComponente = new ComponenteDistribuidorIntegradorSimple(objComponenteBase, false, false);

            objComponente.setContenedor(objComponenteBase.isContenedor());
            objComponente.setFinish(false);

            objComponente.setHeight(objComponenteBase.getHeight());
            objComponente.setWidth(objComponenteBase.getWidth());

            objComponente.setId(objComponenteBase.getId());
            objComponente.setIdConstructor(objComponenteBase.getConstructor());

            objComponente.setStrOyentes(objComponenteBase.getStrOyentes());  

            if(objComponenteBase.getObjGridBagConstraints() != null){
                objComponente.setObjGridBagConstraints(objComponenteBase.getObjGridBagConstraints());
            }

            if(!objComponente.getStrOyentes().isEmpty()){
                //objComponente.setObjOyentes(crearOyentes(objComponente));
            }

            if(objComponenteBase.tienePropiedadesDisponibles()){            
                ArrayList<Propiedad> objPropiedadesDisponibles = GeneradorComponentes.inicializarPropiedadesDisponiblesComponenteBase(objComponente);
                objComponente.setObjPropiedadesDisponibles(objPropiedadesDisponibles);        
            }

            if(objComponenteBase.tienePropiedadesInternas()){
                ArrayList<Propiedad> objPropiedadesInternas = GeneradorComponentes.crearPropiedadesInternas(objComponente);
                objComponente.setObjPropiedadesInternas(objPropiedadesInternas);        
            }

            System.out.println(objComponente);
            return objComponente;
        }catch(java.lang.Exception ex){}
        return null;
    }
    
    /**
     * 
     * @param objComponenteBase
     * @return
     */
    public static ComponenteDistribuidorIntegradorExtra crearComponenteIntegradorExtra(ComponenteBaseStandar objComponenteBase){
        try{
            ComponenteDistribuidorIntegradorExtra objComponente = new ComponenteDistribuidorIntegradorExtra(objComponenteBase, false, false);

            objComponente.setContenedor(objComponenteBase.isContenedor());
            objComponente.setFinish(false);

            objComponente.setHeight(objComponenteBase.getHeight());
            objComponente.setWidth(objComponenteBase.getWidth());

            objComponente.setId(objComponenteBase.getId());
            objComponente.setIdConstructor(objComponenteBase.getConstructor());

            objComponente.setStrOyentes(objComponenteBase.getStrOyentes());  

            if(objComponenteBase.getObjGridBagConstraints() != null){
                objComponente.setObjGridBagConstraints(objComponenteBase.getObjGridBagConstraints());
            }

            if(!objComponente.getStrOyentes().isEmpty()){
                //objComponente.setObjOyentes(crearOyentes(objComponente));
            }

            if(objComponenteBase.tienePropiedadesDisponibles()){            
                ArrayList<Propiedad> objPropiedadesDisponibles = GeneradorComponentes.inicializarPropiedadesDisponiblesComponenteBase(objComponente);
                objComponente.setObjPropiedadesDisponibles(objPropiedadesDisponibles);        
            }

            if(objComponenteBase.tienePropiedadesInternas()){
                ArrayList<Propiedad> objPropiedadesInternas = GeneradorComponentes.crearPropiedadesInternas(objComponente);
                objComponente.setObjPropiedadesInternas(objPropiedadesInternas);        
            }

            System.out.println(objComponente);
            return objComponente;
        }catch(java.lang.Exception ex){}
        return null;
    }
    
    /**
     * 
     * @param objComponenteBase
     * @return
     */
    public static ComponenteDistribuidorModeloAsociado crearComponenteDistribuidorModeloAsociado(ComponenteBaseStandar objComponenteBase){
        try{
            ComponenteDistribuidorModeloAsociado objComponente = new ComponenteDistribuidorModeloAsociado(objComponenteBase, false, false);

            objComponente.setContenedor(objComponenteBase.isContenedor());
            objComponente.setFinish(false);

            objComponente.setHeight(objComponenteBase.getHeight());
            objComponente.setWidth(objComponenteBase.getWidth());

            objComponente.setId(objComponenteBase.getId());
            objComponente.setIdConstructor(objComponenteBase.getConstructor());

            objComponente.setStrOyentes(objComponenteBase.getStrOyentes());  

            if(objComponenteBase.getObjGridBagConstraints() != null){
                objComponente.setObjGridBagConstraints(objComponenteBase.getObjGridBagConstraints());
            }

            if(!objComponente.getStrOyentes().isEmpty()){
                //objComponente.setObjOyentes(crearOyentes(objComponente));
            }

            if(objComponenteBase.tienePropiedadesDisponibles()){            
                ArrayList<Propiedad> objPropiedadesDisponibles = GeneradorComponentes.inicializarPropiedadesDisponiblesComponenteBase(objComponente);
                objComponente.setObjPropiedadesDisponibles(objPropiedadesDisponibles);        
            }

            if(objComponenteBase.tienePropiedadesInternas()){
                ArrayList<Propiedad> objPropiedadesInternas = GeneradorComponentes.crearPropiedadesInternas(objComponente);
                objComponente.setObjPropiedadesInternas(objPropiedadesInternas);        
            }

            System.out.println(objComponente);
            return objComponente;
        }catch(java.lang.Exception ex){}
        return null;
    }
    
    
    /**
     * @DefinicionMetodo
     * @param objComponenteBase @DefinicionParametro
     * @param objTipoDato @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ComponenteDistribuidorGeneradorClaseCompleja crearComponenteGeneradorClaseCompleja(ComponenteBaseStandar objComponenteBase, Class objTipoDato){
        try{
            ComponenteDistribuidorGeneradorClaseCompleja objComponente = new ComponenteDistribuidorGeneradorClaseCompleja(objComponenteBase, objTipoDato.getCanonicalName(), false, false);
            objComponente.setContenedor(objComponenteBase.isContenedor());
            objComponente.setFinish(false);

            objComponente.setHeight(objComponenteBase.getHeight());
            objComponente.setWidth(objComponenteBase.getWidth());

            objComponente.setId(objComponenteBase.getId());
            objComponente.setIdConstructor(objComponenteBase.getConstructor());

            objComponente.setStrOyentes(objComponenteBase.getStrOyentes());

            if(objComponenteBase.getObjGridBagConstraints() != null){
                objComponente.setObjGridBagConstraints(objComponenteBase.getObjGridBagConstraints());
            }

            if(!objComponente.getStrOyentes().isEmpty()){
                //objComponente.setObjOyentes(crearOyentes(objComponente));
            }

            if(objComponenteBase.tienePropiedadesDisponibles()){            
                ArrayList<Propiedad> objPropiedadesDisponibles = GeneradorComponentes.inicializarPropiedadesDisponiblesComponenteBase(objComponente);
                objComponente.setObjPropiedadesDisponibles(objPropiedadesDisponibles);        
            }
            objComponente.setStrTitulo(objTipoDato.getSimpleName());
            if(objComponenteBase.tienePropiedadesInternas()){
                ArrayList<Propiedad> objPropiedadesInternas = GeneradorComponentes.crearPropiedadesInternas(objComponente);
                objComponente.setObjPropiedadesInternas(objPropiedadesInternas);        
            }

            System.out.println(objComponente);
            return objComponente;
        }catch(java.lang.Exception ex){}
        return null;
    }    

    /**
     * @DefinicionMetodo
     * @param objConstructoresBase @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ArrayList<ObjetoConstructor> crearConstructores(ArrayList<ConstructorBase> objConstructoresBase){
        try{
            ArrayList<ObjetoConstructor> objConstructores = new ArrayList<ObjetoConstructor>();
            for(ConstructorBase objConstructorBase : objConstructoresBase){
                ObjetoConstructor objConstructor = crearConstructor(objConstructorBase);
                objConstructores.add(objConstructor);
            }
            return objConstructores;
        }catch(java.lang.Exception ex){}
        return null;
    }
    
    /**
     * @DefinicionMetodo
     * @param objConstructorBase @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ObjetoConstructor crearConstructor(ConstructorBase objConstructorBase){        
        try{
            ObjetoConstructor objConstructor = new ObjetoConstructor();
            objConstructor.setId(objConstructorBase.getId());
            objConstructor.setOrden(objConstructorBase.getOrden());
            objConstructor.setIdComponente(objConstructorBase.getObjComponente().getId());
            objConstructor.setStrClassPath(objConstructorBase.getObjComponente().getStrClassPath());
            objConstructor.setObjParametros(crearParametrosConstructor(objConstructor, objConstructorBase.getObjParametros()));                    
            return objConstructor;
        }catch(java.lang.Exception ex){}
        return null;
    }
    
    /**
     * @DefinicionMetodo
     * @param objConstructoresBase @DefinicionParametro
     * @param orden @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ObjetoConstructor crearConstructor(ArrayList<ConstructorBase> objConstructoresBase, int orden){        
        try{
            for(ConstructorBase objConstructorBase : objConstructoresBase){
                if(objConstructorBase.getOrden() == orden){
                    ObjetoConstructor objConstructor = crearConstructor(objConstructorBase);
                    return objConstructor;
                }
            }
        }catch(java.lang.Exception ex){}
        return null;        
    }    

    /**
     * @DefinicionMetodo
     * @param objConstructor @DefinicionParametro 
     * @param objParametrosBase @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ArrayList<ParametroObjetoConstructor> crearParametrosConstructor(ObjetoConstructor objConstructor, ArrayList<ParametroConstructorBase> objParametrosBase){
        try{
            ArrayList<ParametroObjetoConstructor> objParametros = new ArrayList<ParametroObjetoConstructor>();
            for(ParametroConstructorBase obj : objParametrosBase){
                ParametroObjetoConstructor objParametro = new ParametroObjetoConstructor();
                objParametro.setArray(obj.isArray());
                objParametro.setClasspath(obj.getClasspath());
                objParametro.setId(obj.getId());
                objParametro.setPrimitive(obj.isPrimitive());
                objParametro.setObjConstructor(objConstructor);
                objParametro.idColeccion = objParametros.size();
                objParametros.add(objParametro);
            }
            return objParametros;
        }catch(java.lang.Exception ex){}
        return null;
    }

    /**
     * @DefinicionMetodo
     * @return @DefinicionReturn
     */
    public static ArrayList<ComponenteBaseStandar> crearComponentesBase(){
        try{
            ArrayList<ComponenteBaseStandar> objTempComponentes = new ArrayList<ComponenteBaseStandar>();
            String keys = Representacion.objPropiedadesRepresentacion.getProperty("Utileria.swing.control.keys");
            String key = "Utileria.swing.control";
            ArrayList<String[]> propiedades = Representacion.objPropiedadesRepresentacion.getPropertiesList(key, keys);        
            for(String[] values : propiedades){
                ComponenteBaseStandar obj = new ComponenteBaseStandar(
                            Utileria.getValueInteger(values[0], 0),
                            Utileria.getValueString(values[1], ""),
                            Utileria.getValueInteger(values[2], 1),
                            Utileria.getValueInteger(values[3], 1),
                            Utileria.getValueString(values[4], ""),
                            Utileria.getValueString(values[5], ""),
                            Utileria.getValueString(values[6], ""),
                            Utileria.getValueBoolean(values[7], false),
                            Utileria.getValueInteger(values[8], -1),                        
                            Utileria.getValueBoolean(values[9], false),
                            Utileria.getValueInteger(values[10], 0),
                            Utileria.getValueString(values[11], Utileria.getValueString(values[1], "")),
                            Utileria.getValueString(values[12], ""),
                            Utileria.getValueBoolean(values[13], false),
                            Utileria.getValueBoolean(values[14], false),
                            Utileria.getValueInteger(values[15], 0),
                            Utileria.getValueInteger(values[16], Utileria.PANEL_OPCION_INDEFINIDO)
                        );
                if(!obj.isEstado())continue;
                obj.setObjPropiedadesDisponibles(GeneradorComponentes.crearPropiedadesDisponiblesComponenteBase(obj, true));
                obj.setObjPropiedadesInternas(GeneradorComponentes.crearPropiedadesInternasComponenteBase(obj, true));
                obj.setObjGridBagConstraints(GeneradorComponentes.crearGridBagConstraintsComponenteBase(obj));            
                obj.setObjConstructoresBase(crearConstructoresBase(obj));
                objTempComponentes.add(obj);
                System.out.println(obj);
            }
            return objTempComponentes;
        }catch(java.lang.Exception ex){}
        return null;
    }

    /**
     * @DefinicionMetodo
     * @return @DefinicionReturn
     */
    public static ArrayList<ComponenteBaseStandar> crearContenedoresBase(){
        try{
            ArrayList<ComponenteBaseStandar> objTempContenedores = new ArrayList<ComponenteBaseStandar>();
            String keys = Representacion.objPropiedadesRepresentacion.getProperty("Utileria.swing.contenedor.keys");
            String key = "Utileria.swing.contenedor";
            ArrayList<String[]> propiedades = Representacion.objPropiedadesRepresentacion.getPropertiesList(key, keys);
            for(String[] values : propiedades){
                ComponenteBaseStandar obj = new ComponenteBaseStandar(
                            Utileria.getValueInteger(values[0], 0),
                            Utileria.getValueString(values[1], ""),
                            Utileria.getValueInteger(values[2], 1),
                            Utileria.getValueInteger(values[3], 1),
                            Utileria.getValueString(values[4], ""),
                            Utileria.getValueString(values[5], ""),
                            Utileria.getValueString(values[6], ""),
                            Utileria.getValueBoolean(values[7], false),
                            Utileria.getValueInteger(values[8], -1),                        
                            Utileria.getValueBoolean(values[9], false),
                            Utileria.getValueInteger(values[10], 0),
                            Utileria.getValueString(values[11], Utileria.getValueString(values[1], "")),
                            Utileria.getValueString(values[12], ""),
                            Utileria.getValueBoolean(values[13], false),
                            Utileria.getValueBoolean(values[14], false),
                            -1,
                            Utileria.PANEL_OPCION_INDEFINIDO
                        );
                if(!obj.isEstado())continue;
                obj.setObjPropiedadesDisponibles(GeneradorComponentes.crearPropiedadesDisponiblesComponenteBase(obj, false));
                obj.setObjPropiedadesInternas(GeneradorComponentes.crearPropiedadesInternasComponenteBase(obj, false));
                obj.setObjGridBagConstraints(GeneradorComponentes.crearGridBagConstraintsContenedorBase(obj));            
                objTempContenedores.add(obj);
                System.out.println(obj);
            }
            return objTempContenedores;
        }catch(java.lang.Exception ex){}
        return null;
    }    

    /**
     * @DefinicionMetodo
     * @param objComponente @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ArrayList<ConstructorBase> crearConstructoresBase(ComponenteBaseStandar objComponente){
        try{
            ArrayList<ConstructorBase> objTempConstructores = new ArrayList<ConstructorBase>();
            String keys = Representacion.objPropiedadesRepresentacion.getProperty("Utileria.swing.control.constructor.keys");
            String key = "Utileria.swing.control[" + objComponente.getId() + "].constructor";
            ArrayList<String[]> propiedades = Representacion.objPropiedadesRepresentacion.getPropertiesList(key, keys);
            for(String[] values : propiedades){
                ConstructorBase obj = new ConstructorBase(
                            Utileria.getValueInteger(values[0], -1),
                            Utileria.getValueInteger(values[1], -1),
                            objComponente
                        );
                obj.setObjParametros(crearParametrosConstructorBase(obj));
                objTempConstructores.add(obj);
                System.out.println(obj);
            }
            return objTempConstructores;
        }catch(java.lang.Exception ex){}
        return null;
    }

    /**
     * @DefinicionMetodo
     * @param objConstructor 
@DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ArrayList<ParametroConstructorBase> crearParametrosConstructorBase(ConstructorBase objConstructor){
        try{
            ArrayList<ParametroConstructorBase> objTempParametros = new ArrayList<ParametroConstructorBase>();
            String keys = Representacion.objPropiedadesRepresentacion.getProperty("Utileria.swing.control.constructor.param.keys");
            String key = "Utileria.swing.control[" + objConstructor.getObjComponente().getId() + "].constructor[" + objConstructor.getId() + "].param";
            ArrayList<String[]> propiedades = Representacion.objPropiedadesRepresentacion.getPropertiesList(key, keys);
            for(String[] values : propiedades){
                ParametroConstructorBase obj = new ParametroConstructorBase(
                            Utileria.getValueInteger(values[0], -1),
                            Utileria.getValueString(values[1], ""),
                            Utileria.getValueString(values[2], ""),
                            Utileria.getValueBoolean(values[3], false),
                            Utileria.getValueBoolean(values[4], false),
                            objConstructor
                        );
                objTempParametros.add(obj);
                System.out.println(obj);
            }
            return objTempParametros;
        }catch(java.lang.Exception ex){}
        return null;
    }
    
    /**
     * @DefinicionMetodo
     * @return @DefinicionReturn
     */
    public static ArrayList<OyenteBase> crearOyentesBase(){
        try{
            ArrayList<OyenteBase> objTempParametros = new ArrayList<OyenteBase>();
            String keys = Representacion.objPropiedadesOyentes.getProperty("Utileria.oyente.keys");
            String key = "Utileria.oyente";
            ArrayList<String[]> propiedades = Representacion.objPropiedadesOyentes.getPropertiesList(key, keys);
            for(String[] values : propiedades){
                OyenteBase obj = new OyenteBase(
                        Utileria.getValueInteger(values[0], -1),
                        Utileria.getValueString(values[1], ""),
                        Utileria.getValueString(values[2], ""),
                        Utileria.getValueString(values[3], ""),
                        Utileria.getValueString(values[4], ""),
                        Utileria.getValueString(values[5], ""),
                        Utileria.getValueString(values[6], ""),
                        Utileria.getValueString(values[7], "")
                        );
                obj.setObjEventosBase(crearEventosBase(obj));
                obj.setObjMetodosBase(crearMetodosBase(obj));
                objTempParametros.add(obj);
                System.out.println(obj);
            }
            return objTempParametros;
        }catch(java.lang.Exception ex){}
        return null;
    }   
    
    /**
     * @DefinicionMetodo
     * @param objOyenteBase @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static Oyente<Componente> crearOyente(OyenteBase objOyenteBase){
        try{
            Oyente<Componente> objOyente = new Oyente<Componente>();
            //Cargar Propiedades Directas del Objeto
            objOyente.setId(objOyenteBase.getId());
            objOyente.setStrAccion(objOyenteBase.getStrAccion());
            objOyente.setStrClaseAdaptadora(objOyenteBase.getStrClaseAdaptadora());
            objOyente.setStrInterfaz(objOyenteBase.getStrInterfaz());
            objOyente.setStrNombre(objOyenteBase.getStrNombre());
            objOyente.setStrPaquete(objOyenteBase.getStrPaquete());
            objOyente.setStrToolTips(objOyenteBase.getStrToolTips());
            objOyente.setStrVar(objOyenteBase.getStrVar());
            //Cargar Propiedades de Referencias de Objetos Asociados
            //Carga de Eventos
            ArrayList<EventoOyente> objEventos = new ArrayList<EventoOyente>();
            for(EventoBase objEventoBase : objOyenteBase.getObjEventosBase()){
                EventoOyente objEvento = crearEvento(objEventoBase);
                objEvento.setObjOyente(objOyente);
                objEvento.setObjOyenteBase(objOyenteBase);
                objEventos.add(objEvento);
            }
            //Carga de Metodos
            ArrayList<MetodoOyente> objMetodos = new ArrayList<MetodoOyente>();
            for(MetodoBase objMetodoBase : objOyenteBase.getObjMetodosBase()){
                MetodoOyente objMetodo = crearMetodo(objMetodoBase);
                objMetodo.setObjOyente(objOyente);
                objMetodo.setObjOyenteBase(objOyenteBase);
                objMetodos.add(objMetodo);
            }
            objOyente.setObjEventos(objEventos);
            objOyente.setObjMetodos(objMetodos);
            return objOyente;
        }catch(java.lang.Exception ex){}
        return null;
    }
    
    /**
     * @DefinicionMetodo
     * @param objEventoBase @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static EventoOyente crearEvento(EventoBase objEventoBase){
        try{
            EventoOyente objEvento = new EventoOyente();
            objEvento.setId(objEventoBase.getId());
            objEvento.setIncluido(false);
            objEvento.setStrAlias(objEventoBase.getStrAlias());
            objEvento.setStrNombre(objEventoBase.getStrNombre());
            objEvento.setStrTooltips(objEventoBase.getStrTooltips());        
            return objEvento;
        }catch(java.lang.Exception ex){}
        return null;
    }
    
    /**
     * @DefinicionMetodo
     * @param objMetodoBase @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static MetodoOyente crearMetodo(MetodoBase objMetodoBase){
        try{
            MetodoOyente objMetodo = new MetodoOyente();
            objMetodo.setArray(objMetodoBase.isArray());
            objMetodo.setId(objMetodoBase.getId());
            objMetodo.setPrimitive(objMetodoBase.isPrimitive());
            objMetodo.setStrAlias(objMetodoBase.getStrAlias());
            objMetodo.setStrNombre(objMetodoBase.getStrNombre());
            objMetodo.setStrReturn(objMetodoBase.getStrReturn());
            objMetodo.setStrTooltips(objMetodoBase.getStrTooltips());
            ArrayList<ParametroMetodo> objParametros = new ArrayList<ParametroMetodo>();
            for(ParametroMetodoBase objParametroBase : objMetodoBase.getObjParametrosMetodo()){
                ParametroMetodo objParametroMetodo = crearParametroMetodo(objParametroBase);
                objParametroMetodo.setObjMetodo(objMetodo);
                objParametroMetodo.setObjMetodoBase(objMetodoBase);
                objParametros.add(objParametroMetodo);
            }
            objMetodo.setObjParametros(objParametros);
            return objMetodo;
        }catch(java.lang.Exception ex){}
        return null;
    }
    
    /**
     * @DefinicionMetodo
     * @param objParametroBase @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ParametroMetodo crearParametroMetodo(ParametroMetodoBase objParametroBase){
        try{
            ParametroMetodo objParametroMetodo = new ParametroMetodo();
            objParametroMetodo.setArray(objParametroBase.isArray());
            objParametroMetodo.setId(objParametroBase.getId());
            objParametroMetodo.setPrimitive(objParametroBase.isPrimitive());
            return objParametroMetodo;
        }catch(java.lang.Exception ex){}
        return null;
    }
    
    /**
     * @DefinicionMetodo
     * @param objOyenteBase @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ArrayList<EventoBase> crearEventosBase(OyenteBase objOyenteBase){
        try{
            ArrayList<EventoBase> objTempParametros = new ArrayList<EventoBase>();
            String keys = Representacion.objPropiedadesOyentes.getProperty("Utileria.oyente.evento.keys");
            String key = "Utileria.oyente[" + objOyenteBase.getId() + "].evento";
            ArrayList<String[]> propiedades = Representacion.objPropiedadesOyentes.getPropertiesList(key, keys);
            for(String[] values : propiedades){            
                EventoBase obj = new EventoBase(
                        Utileria.getValueInteger(values[0], -1),
                        Utileria.getValueString(values[1], ""),
                        Utileria.getValueString(values[2], ""),
                        Utileria.getValueString(values[3], ""),
                        objOyenteBase
                        );
                objTempParametros.add(obj);
                System.out.println(obj);
            }
            return objTempParametros;
        }catch(java.lang.Exception ex){}
        return null;
    }
    
    /**
     * @DefinicionMetodo
     * @param objOyenteBase @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ArrayList<MetodoBase> crearMetodosBase(OyenteBase objOyenteBase){
        try{
            ArrayList<MetodoBase> objTempParametros = new ArrayList<MetodoBase>();
            String keys = Representacion.objPropiedadesOyentes.getProperty("Utileria.oyente.metodo.keys");
            String key = "Utileria.oyente[" + objOyenteBase.getId() + "].metodo";
            ArrayList<String[]> propiedades = Representacion.objPropiedadesOyentes.getPropertiesList(key, keys);
            for(String[] values : propiedades){             
                MetodoBase obj = new MetodoBase(
                        Utileria.getValueInteger(values[0], -1),
                        Utileria.getValueString(values[1], ""),
                        "",
                        Utileria.getValueString(values[5], ""),                    
                        objOyenteBase,
                        Utileria.getValueString(values[2], ""),
                        Utileria.getValueBoolean(values[3], false),
                        Utileria.getValueBoolean(values[4], false)
                        );
                obj.setObjParametrosMetodo(crearParametrosMetodoBase(obj));
                objTempParametros.add(obj);
                System.out.println(obj);
            }
            return objTempParametros;
        }catch(java.lang.Exception ex){}
        return null;
    }
    
    /**
     * @DefinicionMetodo
     * @param objMetodoBase @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ArrayList<ParametroMetodoBase> crearParametrosMetodoBase(MetodoBase objMetodoBase){
        try{
            ArrayList<ParametroMetodoBase> objTempParametros = new ArrayList<ParametroMetodoBase>();
            String keys = Representacion.objPropiedadesOyentes.getProperty("Utileria.oyente.metodo.param.keys");        
            String key = "Utileria.oyente[" + objMetodoBase.getObjOyenteBase().getId() + "].metodo[" + objMetodoBase.getId() + "].parametro";
            ArrayList<String[]> propiedades = Representacion.objPropiedadesOyentes.getPropertiesList(key, keys);
            for(String[] values : propiedades){
                ParametroMetodoBase obj = new ParametroMetodoBase(
                        Utileria.getValueInteger(values[0], -1),
                        Utileria.getValueString(values[1], ""),
                        Utileria.getValueBoolean(values[2], false),
                        Utileria.getValueBoolean(values[3], false),                    
                        objMetodoBase
                        );
                objTempParametros.add(obj);
                System.out.println(obj);
            }
            return objTempParametros;
        }catch(java.lang.Exception ex){}
        return null;
    }
    
    /**
     * @DefinicionMetodo
     * @param objComponenteGeneradoInterno @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ArrayList<Plantilla> crearPlantillas(ComponenteGeneradoInterno objComponenteGeneradoInterno){
        try{
            ArrayList<Plantilla> objPlantillas = new ArrayList<Plantilla>();
            String keys = Representacion.objPropiedadesRepresentacion.getProperty("Utileria.swing.control.plantilla.keys");
            String key = "Utileria.swing.control[" + objComponenteGeneradoInterno.getId() + "].plantilla";
            ArrayList<String[]> propiedades = Representacion.objPropiedadesRepresentacion.getPropertiesList(key, keys);
            for(String[] values : propiedades){
                Plantilla obj = new Plantilla(
                            Utileria.getValueInteger(values[0], -1),
                            Utileria.getValueString(values[1], "Plantilla Indefinida")
                        );
                obj.setObjPlantillasComponentes(crearPlantillasComponentes(objComponenteGeneradoInterno, obj));
                objPlantillas.add(obj);
                System.out.println(obj);
            }
            return objPlantillas;
        }catch(java.lang.Exception ex){}
        return null;
    }       
    
    /**
     * @DefinicionMetodo
@DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ArrayList<ModelColeccion> crearModelos(){
        try{
            ArrayList<ModelColeccion> objPlantillas = new ArrayList<ModelColeccion>();
            String keys = Representacion.objPropiedadesModelos.getProperty("Model.coleccion.keys");
            String key = "Model.coleccion";
            ArrayList<String[]> propiedades = Representacion.objPropiedadesModelos.getPropertiesList(key, keys);
            for(String[] values : propiedades){
                //id, nombre, search, primitive, string
                ModelColeccion obj = new ModelColeccion(
                            Utileria.getValueInteger(values[4], 0),
                            Utileria.getValueString(values[1], ""),
                            Utileria.getValueString(values[2], ""),
                            Utileria.getValueBoolean(values[3], false),
                            Utileria.getValueBoolean(values[4], false)
                        );
                obj.setObjItems(crearItemsModelos(obj));
                objPlantillas.add(obj);
                System.out.println(obj);
            }
            return objPlantillas;
        }catch(java.lang.Exception ex){}
        return null;
    }
    
    /**
     * @param objModelo 
     * @DefinicionMetodo
@DefinicionParametro
@DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ArrayList<ModelItemColeccion> crearItemsModelos(ModelColeccion objModelo){
        try{
            ArrayList<ModelItemColeccion> objPlantillasComponentes = new ArrayList<ModelItemColeccion>();
            String keys = Representacion.objPropiedadesModelos.getProperty("Model.coleccion.item.keys");
            String key = "Model.coleccion[" + objModelo.getId() + "].item";
            ArrayList<String[]> propiedades = Representacion.objPropiedadesModelos.getPropertiesList(key, keys);
            for(String[] values : propiedades){  
                //id, titulo, propiedad, ayuda, valor, editable, number, base
                ModelItemColeccion obj = new ModelItemColeccion(
                            Utileria.getValueInteger(values[0], 0),
                            Utileria.getValueString(values[1], ""),
                            Utileria.getValueString(values[2], ""),
                            Utileria.getValueString(values[3], ""),
                            Utileria.getValueString(values[4], ""),
                            Utileria.getValueBoolean(values[5], false),
                            Utileria.getValueBoolean(values[6], false),
                            Utileria.getValueCharacter(values[7], 'D')
                        );             
                obj.setObjModelCombo(objModelo);
                objPlantillasComponentes.add(obj);
                System.out.println(obj);            
            }
            return objPlantillasComponentes;
        }catch(java.lang.Exception ex){}
        return null;
    }
    
    /**
     * @DefinicionMetodo
     * @param objComponenteGenerador @DefinicionParametro
     * @param objComponentePersonalizado @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ArrayList<Plantilla> crearPlantillasPersonalizadas(ComponenteBasePersonalizado objComponentePersonalizado){
        try{
            ArrayList<Plantilla> objPlantillas = new ArrayList<Plantilla>();
            String keys = Representacion.objPropiedadesRepresentacion.getProperty("Utileria.swing.personalizado.plantilla.keys");
            String key = "Utileria.swing.personalizado[" + objComponentePersonalizado.getId() + "].plantilla";
            ArrayList<String[]> propiedades = Representacion.objPropiedadesRepresentacion.getPropertiesList(key, keys);
            for(String[] values : propiedades){
                Plantilla obj = new Plantilla(
                            Utileria.getValueInteger(values[0], -1),
                            Utileria.getValueString(values[1], "Plantilla Indefinida")
                        );
                obj.setObjPlantillasComponentes(crearPlantillasPersonalizadasComponentes(objComponentePersonalizado, obj));
                objPlantillas.add(obj);
                System.out.println(obj);
            }
            return objPlantillas;
        }catch(java.lang.Exception ex){}
        return null;
    }    
        
    
    /**
     * @DefinicionMetodo
     * @param objComponentePersonalizado @param objPlantilla 
     * @param objPlantilla 
     * @DefinicionParametro
@DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ArrayList<PlantillaComponente> crearPlantillasPersonalizadasComponentes(ComponenteBasePersonalizado objComponentePersonalizado, Plantilla objPlantilla){
        try{
            ArrayList<PlantillaComponente> objPlantillasComponentes = new ArrayList<PlantillaComponente>();
            String keys = Representacion.objPropiedadesRepresentacion.getProperty("Utileria.swing.personalizado.plantilla.control.keys");
            String key = "Utileria.swing.personalizado[" + objComponentePersonalizado.getId() + "].plantilla[" + objPlantilla.getId() + "].control";
            ArrayList<String[]> propiedades = Representacion.objPropiedadesRepresentacion.getPropertiesList(key, keys);
            for(String[] values : propiedades){
                PlantillaComponente obj = new PlantillaComponente(                        
                            Utileria.getValueInteger(values[0], 0),
                            Utileria.getValueInteger(values[1], 0),
                            Utileria.getValueInteger(values[2], 1),
                            Utileria.getValueInteger(values[3], 1),
                            Utileria.getValueInteger(values[4], 0),
                            Utileria.getValueBoolean(values[5], false)
                        );    
                obj.setObjGridBagConstraints(GeneradorComponentes.crearGridBagConstraintsPlantilla(objComponentePersonalizado, objPlantilla, obj));
                
                objPlantillasComponentes.add(obj);
                System.out.println(obj);
            }
            return objPlantillasComponentes;
        }catch(java.lang.Exception ex){}
        return null;
    }
    
    /**
     * 
     * @param objComponenteBaseLink
     * @param objPlantilla
     * @return
     */
    public static ArrayList<PlantillaComponente> crearPlantillasPersonalizadasComponentes(ComponenteBaseLink objComponenteBaseLink, Plantilla objPlantilla){
        try{
            ArrayList<PlantillaComponente> objPlantillasComponentes = new ArrayList<PlantillaComponente>();
            String keys = Representacion.objPropiedadesRepresentacion.getProperty("Utileria.swing.link.plantilla.control.keys");
            String key = "Utileria.swing.link[" + objComponenteBaseLink.getId() + "].plantilla[" + objPlantilla.getId() + "].control";
            ArrayList<String[]> propiedades = Representacion.objPropiedadesRepresentacion.getPropertiesList(key, keys);
            for(String[] values : propiedades){
                PlantillaComponente obj = new PlantillaComponente(                        
                            Utileria.getValueInteger(values[0], 0),
                            Utileria.getValueInteger(values[1], 0),
                            Utileria.getValueInteger(values[2], 1),
                            Utileria.getValueInteger(values[3], 1),
                            Utileria.getValueInteger(values[4], 0),
                            Utileria.getValueBoolean(values[5], false)
                        );    
                obj.setObjGridBagConstraints(GeneradorComponentes.crearGridBagConstraintsPlantilla(objComponenteBaseLink, objPlantilla, obj));
                objPlantillasComponentes.add(obj);
                System.out.println(obj);
            }
            return objPlantillasComponentes;
        }catch(java.lang.Exception ex){}
        return null;
    }
    
    /**
     * @DefinicionMetodo
     * @param objComponenteGeneradoInterno @DefinicionParametro
     * @param objPlantilla @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ArrayList<PlantillaComponente> crearPlantillasComponentes(ComponenteGeneradoInterno objComponenteGeneradoInterno, Plantilla objPlantilla){
        try{
            ArrayList<PlantillaComponente> objPlantillasComponentes = new ArrayList<PlantillaComponente>();
            String keys = Representacion.objPropiedadesRepresentacion.getProperty("Utileria.swing.control.plantilla.control.keys");
            String key = "Utileria.swing.control[" + objComponenteGeneradoInterno.getId() + "].plantilla[" + objPlantilla.getId() + "].control";
            ArrayList<String[]> propiedades = Representacion.objPropiedadesRepresentacion.getPropertiesList(key, keys);
            for(String[] values : propiedades){
                PlantillaComponente obj = new PlantillaComponente(
                            Utileria.getValueInteger(values[0], 0),
                            Utileria.getValueInteger(values[1], 0),
                            Utileria.getValueInteger(values[2], 1),
                            Utileria.getValueInteger(values[3], 1),
                            Utileria.getValueInteger(values[4], 0),
                            Utileria.getValueBoolean(values[5], false),
                            Utileria.getValueInteger(values[6], -1)
                        );             
                obj.setObjGridBagConstraints(GeneradorComponentes.crearGridBagConstraintsPlantilla(objComponenteGeneradoInterno, objPlantilla, obj));
                obj.setObjInternalProperties(GeneradorComponentes.crearInternalProperties(objComponenteGeneradoInterno, objPlantilla, obj));
                objPlantillasComponentes.add(obj);
                System.out.println(obj);            
            }
            return objPlantillasComponentes;
        }catch(java.lang.Exception ex){}
        return null;
    }            
    
    /**
     * 
     * @param objComponente
     * @return
     */
    public static GridBagConstraints crearGridBagConstraintsComponenteBase(ComponenteBaseStandar objComponente){
        try{
            String keys = Representacion.objPropiedadesRepresentacion.getProperty("Utileria.swing.control.GridBagConstraints.keys");
            String key = "Utileria.swing.control[" + objComponente.getId() + "].GridBagConstraints";
            ArrayList<String[]> propiedades = Representacion.objPropiedadesRepresentacion.getPropertiesListOnlyOne(key, keys);
            if(propiedades.size() == 1){            
                String[] values = propiedades.get(0);
                GridBagConstraints obj = crearGridBagConstraints(values);
                System.out.println(obj);   
                return obj;
            }
        }catch(java.lang.Exception ex){}
        return null;        
    }
    
    /**
     * 
     * @param objComponente
     * @return
     */
    public static ArrayList<InternalProperty> crearInternalProperties(Componente objComponente, Plantilla objPlantilla, PlantillaComponente objPlantillaComponente){
        return crearInternalProperties(objComponente.getId(), objPlantilla.getId(), objPlantillaComponente.getId());
    }
    
    /**
     * 
     * @param objComponente
     * @return
     */
    public static ArrayList<InternalProperty> crearInternalProperties(int idComponente, int idPlantilla, int idPlantillaComponente){
        try{
            ArrayList<InternalProperty> objInternalProperties = new ArrayList<InternalProperty>();
            String keys = Representacion.objPropiedadesRepresentacion.getProperty("Utileria.swing.control.plantilla.control.property.keys");
            String key = "Utileria.swing.control[" + idComponente + "].plantilla[" + idPlantilla + "].control[" + idPlantillaComponente + "].property";
            ArrayList<String[]> propiedades = Representacion.objPropiedadesRepresentacion.getPropertiesList(key, keys);
            for(String[] values : propiedades){
                InternalProperty obj = new InternalProperty(                
                            Utileria.getValueInteger(values[0], 0),
                            Utileria.getValueString(values[1], ""),
                            Utileria.getValueString(values[2], "")
                        );            
                objInternalProperties.add(obj);
                System.out.println(obj);
            }
            return objInternalProperties;
        }catch(java.lang.Exception ex){}
        return null;        
    }
    
    /**
     * 
     * @param objComponente
     * @return
     */
    public static GridBagConstraints crearGridBagConstraintsContenedorBase(ComponenteBaseStandar objComponente){
        try{
            String keys = Representacion.objPropiedadesRepresentacion.getProperty("Utileria.swing.contenedor.GridBagConstraints.keys");
            String key = "Utileria.swing.contenedor[" + objComponente.getId() + "].GridBagConstraints";
            ArrayList<String[]> propiedades = Representacion.objPropiedadesRepresentacion.getPropertiesListOnlyOne(key, keys);
            if(propiedades.size() == 1){            
                String[] values = propiedades.get(0);
                GridBagConstraints obj = crearGridBagConstraints(values);
                System.out.println(obj);   
                return obj;
            }
        }catch(java.lang.Exception ex){}
        return null;        
    }
    
    /**
     * 
     * @param values
     * @return
     */
    public static GridBagConstraints crearGridBagConstraints(String[] values){
        try{
            ModelColeccion objModel = 
                    GeneradorComponentes.objModelosColecciones.get(MODELO_CONSTANTES_GRIDBAGCONSTRAINTS);
            if(objModel == null){
                return new GridBagConstraints(
                    Utileria.getValueInteger(values[0], 0), Utileria.getValueInteger(values[1], 0),
                    Utileria.getValueInteger(values[2], 0), Utileria.getValueInteger(values[3], 0),
                    Utileria.getValueDouble(values[4], 0), Utileria.getValueDouble(values[5], 0),
                    (UtilOpciones.objPreferences.getBoolean(MyPreferences.BOOLEAN_APP_ACTIVAR_AUTOAJUSTE_SWING)) ? 
                        GridBagConstraints.CENTER : Utileria.getValueInteger(values[6], 0), 
                    (UtilOpciones.objPreferences.getBoolean(MyPreferences.BOOLEAN_APP_ACTIVAR_AUTOAJUSTE_SWING)) ? 
                        GridBagConstraints.BOTH : Utileria.getValueInteger(values[7], 0),
                    new Insets( Utileria.getValueInteger(values[8], 0), 
                                Utileria.getValueInteger(values[9], 0), 
                                Utileria.getValueInteger(values[10], 0), 
                                Utileria.getValueInteger(values[11], 0)), 
                                Utileria.getValueInteger(values[12], 0), 
                                Utileria.getValueInteger(values[13], 0));             
            }
            else{
                int gridx, gridy;
                int gridwidth, gridheight;
                double weightx, weighty;
                int anchor, fill;
                Insets objInsets;
                int ipadx, ipady;
                gridx = objModel.getValueInteger(values[0], 0);
                gridy = objModel.getValueInteger(values[1], 0);
                gridwidth = objModel.getValueInteger(values[2], 1);
                gridheight = objModel.getValueInteger(values[3], 1);
                weightx = objModel.getValueDouble(values[4], 0.0);
                weighty = objModel.getValueDouble(values[5], 0.0);
                anchor = (UtilOpciones.objPreferences.getBoolean(MyPreferences.BOOLEAN_APP_ACTIVAR_AUTOAJUSTE_SWING)) ? 
                        GridBagConstraints.CENTER : objModel.getValueInteger(values[6], 10);
                fill = (UtilOpciones.objPreferences.getBoolean(MyPreferences.BOOLEAN_APP_ACTIVAR_AUTOAJUSTE_SWING)) ? 
                        GridBagConstraints.BOTH : objModel.getValueInteger(values[7], 0);
                objInsets = new Insets(
                        objModel.getValueInteger(values[8], 1), 
                        objModel.getValueInteger(values[9], 1),
                        objModel.getValueInteger(values[10], 1),
                        objModel.getValueInteger(values[11], 1));
                ipadx = objModel.getValueInteger(values[12], 2);
                ipady = objModel.getValueInteger(values[13], 2);
                return new GridBagConstraints(
                        gridx, gridy, 
                        gridwidth, gridheight, 
                        weightx, weighty, 
                        anchor, 
                        fill, 
                        objInsets, 
                        ipadx, ipady);
            }
        }catch(java.lang.Exception ex){}
        return null;
    }
    
    /**
     * 
     * @param objComponente
     * @param objPlantilla
     * @param objPlantillaComponente
     * @return
     */
    public static GridBagConstraints crearGridBagConstraintsPlantilla(Componente objComponente, Plantilla objPlantilla, PlantillaComponente objPlantillaComponente){
        try{
            String keys = Representacion.objPropiedadesRepresentacion.getProperty("Utileria.swing.control.plantilla.control.GridBagConstraints.keys");
            String key = "Utileria.swing.control[" + objComponente.getId() + "].plantilla[" + objPlantilla.getId() + "].control[" + objPlantillaComponente.getId() + "].GridBagConstraints";
            ArrayList<String[]> propiedades = Representacion.objPropiedadesRepresentacion.getPropertiesListOnlyOne(key, keys);        
            if(propiedades.size() == 1){
                String[] values = propiedades.get(0);
                GridBagConstraints obj = crearGridBagConstraints(values);
                if(objPlantillaComponente.getX() != obj.gridx || objPlantillaComponente.getY() != obj.gridy){
                    System.out.println(" id: " + objComponente.getId() + 
                            " Componente: " + objComponente.getStrClassPath() + 
                            " x: " + obj.gridx + 
                            " y: " + obj.gridy +
                            " Plantilla id: " + objPlantillaComponente.getId() +
                            " x: " + objPlantillaComponente.getX() + 
                            " y: " + objPlantillaComponente.getY());   
                }
                else System.out.println(obj);   
                return obj;
            }
        }catch(java.lang.Exception ex){}
        return null;        
    }
    
    /**
     * 
     * @param objComponente
     * @param objPlantilla
     * @param objPlantillaComponente
     * @return
     */
    public static GridBagConstraints crearGridBagConstraintsPlantilla(ComponenteBasePersonalizado objComponente, Plantilla objPlantilla, PlantillaComponente objPlantillaComponente){
        try{
            String keys = Representacion.objPropiedadesRepresentacion.getProperty("Utileria.swing.personalizado.plantilla.control.GridBagConstraints.keys");
            String key = "Utileria.swing.personalizado[" + objComponente.getId() + "].plantilla[" + objPlantilla.getId() + "].control[" + objPlantillaComponente.getId() + "].GridBagConstraints";
            ArrayList<String[]> propiedades = Representacion.objPropiedadesRepresentacion.getPropertiesListOnlyOne(key, keys);
            if(propiedades.size() == 1){
                String[] values = propiedades.get(0);
                GridBagConstraints obj = crearGridBagConstraints(values);
                if(objPlantillaComponente.getX() != obj.gridx || objPlantillaComponente.getY() != obj.gridy){
                    System.out.println("Componente Personalizado:" + objComponente.getStrAlias() + " x: " + obj.gridx + " y: " + obj.gridy);   
                }
                else System.out.println(obj);   
                return obj;
            }
        }catch(java.lang.Exception ex){}        
        return null;
    }
    
    /**
     * 
     * @param objComponente
     * @param objPlantilla
     * @param objPlantillaComponente
     * @return
     */
    public static GridBagConstraints crearGridBagConstraintsPlantilla(ComponenteBaseLink objComponente, Plantilla objPlantilla, PlantillaComponente objPlantillaComponente){
        try{
            String keys = Representacion.objPropiedadesRepresentacion.getProperty("Utileria.swing.link.plantilla.control.GridBagConstraints.keys");
            String key = "Utileria.swing.link[" + objComponente.getId() + "].plantilla[" + objPlantilla.getId() + "].control[" + objPlantillaComponente.getId() + "].GridBagConstraints";
            ArrayList<String[]> propiedades = Representacion.objPropiedadesRepresentacion.getPropertiesListOnlyOne(key, keys);
            if(propiedades.size() == 1){
                String[] values = propiedades.get(0);
                GridBagConstraints obj = crearGridBagConstraints(values);
                if(objPlantillaComponente.getX() != obj.gridx || objPlantillaComponente.getY() != obj.gridy){
                    System.out.println("Componente Link: " + objComponente.getStrAlias() + " x: " + obj.gridx + " y: " + obj.gridy);   
                }
                else System.out.println(obj);   
                return obj;
            }
        }catch(java.lang.Exception ex){}
        return null;        
    }
    
    /**
     * @DefinicionMetodo
     * @return @DefinicionReturn
     */
    public static ArrayList<ModeloRepresentacionBase> crearModelosRepresentacionesBase(){
        try{
            ArrayList<ModeloRepresentacionBase> objModelosRepresentaciones = new ArrayList<ModeloRepresentacionBase>();
            String keys = Representacion.objPropiedadesRepresentacion.getProperty("Utileria.model.keys");
            String key = "Utileria.model";
            ArrayList<String[]> propiedades = Representacion.objPropiedadesRepresentacion.getPropertiesList(key, keys);
            for(String[] values : propiedades){
                ModeloRepresentacionBase obj = new ModeloRepresentacionBase(                        
                            Utileria.getValueInteger(values[0], 0),
                            Utileria.getValueString(values[1], ""),
                            Utileria.getValueString(values[2], ""),
                            Utileria.getValueString(values[3], ""),
                            Utileria.getValueString(values[4], "")
                        );            
                objModelosRepresentaciones.add(obj);
                System.out.println(obj);        }
            return objModelosRepresentaciones;
        }catch(java.lang.Exception ex){}
        return null;
    }    
    
    /**
     * @DefinicionMetodo
     * @return @DefinicionReturn
     */
    public static ArrayList<TipoDatoRepresentacionBase> crearTiposDatosRepresentacionesBase(){
        try{
            ArrayList<TipoDatoRepresentacionBase> objModelosRepresentaciones = new ArrayList<TipoDatoRepresentacionBase>();
            String keys = Representacion.objPropiedadesRepresentacion.getProperty("Utileria.type.keys");
            String key = "Utileria.type";
            ArrayList<String[]> propiedades = Representacion.objPropiedadesRepresentacion.getPropertiesList(key, keys);
            for(String[] values : propiedades){
                TipoDatoRepresentacionBase obj = new TipoDatoRepresentacionBase(                        
                        Utileria.getValueInteger(values[0], 0),
                        Utileria.getValueString(values[1], ""),
                        Utileria.getValueBoolean(values[2], true),
                        Utileria.getValueBoolean(values[3], false),
                        Utileria.getValueInteger(values[4], 0),
                        Utileria.getValueString(values[5], ""),
                        Utileria.getValueString(values[6], ""),
                        Utileria.getValueString(values[7], ""),
                        Utileria.getValueString(values[8], "0"),
                        Utileria.getValueInteger(values[9], 0),
                        Utileria.getValueBoolean(values[10], false),
                        Utileria.getValueBoolean(values[11], false),
                        Utileria.getValueInteger(values[12], 
                        Utileria.PANEL_OPCION_INDEFINIDO),
                        GeneradorComponentes.objModelosRepresentacionBase.get(Utileria.getValueInteger(values[4], 0))
                    );            
                objModelosRepresentaciones.add(obj);
                ArrayList<CastTipoDatoRepresentacionBase> objColeccion = crearCastTiposDatosRepresentacionesBase(obj);
                obj.setObjColeccionCastTipoDatoRepresentacionBase(objColeccion);
                System.out.println(obj);
            }
            return objModelosRepresentaciones;
        }catch(java.lang.Exception ex){}
        return null;
    }
    
    /**
     * 
     * @param objTipoDatoRepresentacionBase
     * @return
     */
    public static ArrayList<CastTipoDatoRepresentacionBase> crearCastTiposDatosRepresentacionesBase(TipoDatoRepresentacionBase objTipoDatoRepresentacionBase){
        try{
            ArrayList<CastTipoDatoRepresentacionBase> objMoldesTipoDatoRepresentaciones = new ArrayList<CastTipoDatoRepresentacionBase>();
            String keys = Representacion.objPropiedadesRepresentacion.getProperty("Utileria.type.cast.keys");
            String key = "Utileria.type[" + objTipoDatoRepresentacionBase.getId() + "].cast";        
            ArrayList<String[]> propiedades = Representacion.objPropiedadesRepresentacion.getPropertiesList(key, keys);
            for(String[] values : propiedades){
                CastTipoDatoRepresentacionBase obj = new CastTipoDatoRepresentacionBase(                        
                        Utileria.getValueInteger(values[0], -1),
                        Utileria.getValueString(values[1], ""),
                        Utileria.getValueString(values[2], ""),
                        Utileria.getValueBoolean(values[3], false),
                        Utileria.getValueBoolean(values[4], false),                    
                        Utileria.getValueString(values[5], ""),
                        Utileria.getValueString(values[6], ""),
                        Utileria.getValueString(values[7], ""),
                        Utileria.getValueString(values[8], ""),
                        Utileria.getValueInteger(values[9], 0),
                        Utileria.getValueBoolean(values[10], false),
                        objTipoDatoRepresentacionBase
                    );            
                objMoldesTipoDatoRepresentaciones.add(obj);
                System.out.println(obj);
            }
            return objMoldesTipoDatoRepresentaciones;
        }catch(java.lang.Exception ex){}
        return null;
    }
    
    /**
     * @DefinicionMetodo
     * @param objTipoDato @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static TipoDatoRepresentacionBase devolverTipoDatoRepresentacionBasePorTipoDato(ObjetoTipoDatoReflexion objTipoDato){        
        try{
            return devolverTipoDatoRepresentacionBasePorClass(objTipoDato.getObjClass());
        }catch(java.lang.NullPointerException ex) {
            Logger.getLogger(GeneradorComponentes.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
    
    /**
     * 
     * @param objTipoDato
     * @param strClassPath
     * @return
     */
    public static boolean aplicaCast(ObjetoTipoDatoReflexion objTipoDato, String strClassPath){
        try{
            TipoDatoRepresentacionBase objTipoDatoRepresentacionBase = devolverTipoDatoRepresentacionBasePorClassPath(objTipoDato.getStrClassPath());
            for(CastTipoDatoRepresentacionBase obj : objTipoDatoRepresentacionBase.getObjColeccionCastTipoDatoRepresentacionBase()){
                if(obj.getSimplename().equals(strClassPath) || obj.getCanonicalname().equals(strClassPath)){
                    return true;
                }
            }
        }
        catch(java.lang.NullPointerException ex){}
        return false;
    }
    
    /**
     * 
     * @param objTipoDato
     * @param strClassPath
     * @return
     */
    public static CastTipoDatoRepresentacionBase devolverCast(ObjetoTipoDatoReflexion objTipoDato, String strClassPath){
        try{
            TipoDatoRepresentacionBase objTipoDatoRepresentacionBase = devolverTipoDatoRepresentacionBasePorClassPath(objTipoDato.getStrClassPath());
            for(CastTipoDatoRepresentacionBase obj : objTipoDatoRepresentacionBase.getObjColeccionCastTipoDatoRepresentacionBase()){
                if(obj.getSimplename().equals(strClassPath) || obj.getCanonicalname().equals(strClassPath)){
                    return obj;
                }
            }
        }
        catch(java.lang.NullPointerException ex){}
        return null;
    }
    
    /**
     * 
     * @param objClass
     * @return
     */
    public static TipoDatoRepresentacionBase devolverTipoDatoRepresentacionBasePorClass(Class<?> objClass){        
        try{
            for(TipoDatoRepresentacionBase objTipoBase : GeneradorComponentes.objTiposDatoRepresentacionBase){
                if(objClass.isEnum() && objTipoBase.getStrClassPath().equals("enum")){
                    return objTipoBase;
                }
                else if(objClass.isArray() && objTipoBase.getStrClassPath().equals("Array[]")){
                    return objTipoBase;
                }
                else if(objTipoBase.getStrClassPath().equals(objClass.getCanonicalName())){
                    return objTipoBase;
                }
            }
        }catch(java.lang.Exception ex){}
        return null;           
    }
    
    /**
     * 
     * @param strClass
     * @return
     */
    public static TipoDatoRepresentacionBase devolverTipoDatoRepresentacionBasePorClassPath(String strClass){        
        try{
            for(TipoDatoRepresentacionBase objTipoBase : GeneradorComponentes.objTiposDatoRepresentacionBase){            
                if(objTipoBase.getStrClassPath().equals(strClass)){
                    return objTipoBase;
                }
            }
        }catch(java.lang.Exception ex){}
        return null;           
    }
    
    /**
     * @DefinicionMetodo
     * @return @DefinicionReturn
     */
    public static ArrayList<ComponenteBasePersonalizado> crearComponentesPersonalizadosBase(){
        try{
            ArrayList<ComponenteBasePersonalizado> objComponentesPersonalizados = new ArrayList<ComponenteBasePersonalizado>();
            String keys = Representacion.objPropiedadesRepresentacion.getProperty("Utileria.swing.personalizado.keys");
            String key = "Utileria.swing.personalizado";
            ArrayList<String[]> propiedades = Representacion.objPropiedadesRepresentacion.getPropertiesList(key, keys);
            for(String[] values : propiedades){
                ComponenteBasePersonalizado obj = new ComponenteBasePersonalizado(                        
                            Utileria.getValueInteger(values[0], 0),
                            Utileria.getValueString(values[1], ""),
                            Utileria.getValueString(values[2], ""),
                            Utileria.getValueString(values[3], ""),
                            Utileria.getValueString(values[4], ""),
                            Utileria.getValueString(values[5], ""),
                            Utileria.getValueBoolean(values[6], false),
                            Utileria.getValueInteger(values[7], Utileria.ALL)
                        );            
                objComponentesPersonalizados.add(obj);
                System.out.println(obj);
            }
            return objComponentesPersonalizados;
        }catch(java.lang.Exception ex){}
        return null;
    }   
    
    /**
     * @DefinicionMetodo
     * @return @DefinicionReturn
     */
    public static ArrayList<ComponenteBaseLink> crearComponentesLinkBase(){
        try{
            ArrayList<ComponenteBaseLink> objComponentesLinks = new ArrayList<ComponenteBaseLink>();
            String keys = Representacion.objPropiedadesRepresentacion.getProperty("Utileria.swing.link.keys");
            String key = "Utileria.swing.link";
            ArrayList<String[]> propiedades = Representacion.objPropiedadesRepresentacion.getPropertiesList(key, keys);
            for(String[] values : propiedades){
                ComponenteBaseLink obj = new ComponenteBaseLink(                        
                            Utileria.getValueInteger(values[0], 0),
                            Utileria.getValueString(values[1], ""),
                            Utileria.getValueString(values[2], ""),
                            Utileria.getValueString(values[3], ""),
                            Utileria.getValueString(values[4], ""),                        
                            Utileria.getValueString(values[5], ""),
                            Utileria.getValueBoolean(values[6], false),
                            Utileria.getValueInteger(values[7], Utileria.ALL)
                        );            
                objComponentesLinks.add(obj);
                System.out.println(obj);
            }
            return objComponentesLinks;
        }catch(java.lang.Exception ex){}
        return null;
    }
    
    
    /**
     * @DefinicionMetodo
     * @return @DefinicionReturn
     */
    public static ArrayList<PatronRepresentacionBase> crearPatronesBase(){
        try{
            ArrayList<PatronRepresentacionBase> objComponentesPersonalizados = new ArrayList<PatronRepresentacionBase>();
            String keys = Representacion.objPropiedadesPatrones.getProperty("Patron.keys");
            String key = "Patron";
            ArrayList<String[]> propiedades = Representacion.objPropiedadesPatrones.getPropertiesList(key, keys);
            for(String[] values : propiedades){
                PatronRepresentacionBase obj = new PatronRepresentacionBase(                        
                            Utileria.getValueInteger(values[0], 0),
                            Utileria.getValueString(values[1], ""),
                            Utileria.getValueString(values[2], ""),
                            Utileria.getValueInteger(values[3], 1),
                            Utileria.getValueInteger(values[4], 1),
                            Utileria.getValueInteger(values[5], 1),
                            Utileria.getValueInteger(values[6], 2)
                        );  
                obj.setObjReferenciasBase(crearReferenciasPatronesBase(obj));
                objComponentesPersonalizados.add(obj);
                System.out.println(obj);
            }
            return objComponentesPersonalizados;
        }catch(java.lang.Exception ex){}
        return null;
    }   
    
    /**
     * @DefinicionMetodo
     * @param objPatronBase @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ArrayList<ReferenciaPatronBase> crearReferenciasPatronesBase(PatronRepresentacionBase objPatronBase){
        try{
            ArrayList<ReferenciaPatronBase> objComponentesPersonalizados = new ArrayList<ReferenciaPatronBase>();
            String keys = Representacion.objPropiedadesPatrones.getProperty("Patron.ref.keys");
            String key = "Patron[" + objPatronBase.getId() + "].ref";
            ArrayList<String[]> propiedades = Representacion.objPropiedadesPatrones.getPropertiesList(key, keys);
            for(String[] values : propiedades){
                ReferenciaPatronBase obj = new ReferenciaPatronBase(                        
                            Utileria.getValueInteger(values[0], 0),
                            Utileria.getValueInteger(values[1], 1),
                            Utileria.getValueInteger(values[2], 2),
                            Utileria.getValueInteger(values[3], 0),
                            objPatronBase                       
                        );            
                objComponentesPersonalizados.add(obj);
                System.out.println(obj);
            }
            return objComponentesPersonalizados;
        }catch(java.lang.Exception ex){}
        return null;
    }
    
    /**
     * @DefinicionMetodo
     * @param objTipo @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ArrayList<ComponenteBaseStandar> devolverComponentesBasePorTipoDato(ObjetoTipoDatoReflexion objTipo){        
        try{
            for(TipoDatoRepresentacionBase objTipoBase : GeneradorComponentes.objTiposDatoRepresentacionBase){
                if(objTipoBase.getStrClassPath().equals(objTipo.getStrClassPath()) && 
                        (objTipoBase.getCompatibilidad() == 0 || objTipoBase.getCompatibilidad() == 2)){
                    return objTipoBase.getObjModeloBase().getRepresentacionComponentesBase(Utileria.ALL);
                }
            }
        }catch(java.lang.Exception ex){}
        return null;        
    }
    
    /**
     * @DefinicionMetodo
     * @param objTipo @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ArrayList<ComponenteBasePersonalizado> devolverComponentesBasePersonalizadosPorTipoDato(ObjetoTipoDatoReflexion objTipo){        
        try{
            ArrayList<ComponenteBasePersonalizado> objComponentesPersonalizados = new ArrayList<ComponenteBasePersonalizado>();
            for(TipoDatoRepresentacionBase objTipoBase : GeneradorComponentes.objTiposDatoRepresentacionBase){
                if(objTipoBase.getStrClassPath().equals(objTipo.getStrClassPath()) && 
                        (objTipoBase.getCompatibilidad() == 1 || objTipoBase.getCompatibilidad() == 2)){
                    String strSoportados = objTipoBase.getPersonalizados();
                    StringTokenizer objToken = new StringTokenizer(strSoportados, " ,");
                    while(objToken.hasMoreTokens()){
                        int id = Integer.parseInt(objToken.nextToken());
                        ComponenteBasePersonalizado objComponentePersonalizadoBase = 
                                GeneradorComponentes.objComponentesPersonalizadosBase.get(id);
                        objComponentesPersonalizados.add(objComponentePersonalizadoBase);
                    }
                    return objComponentesPersonalizados;
                }
            }        
        }catch(java.lang.Exception ex){}
        return null;
    }       
    
    /**
     * @DefinicionMetodo
     * @param objComponente @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ArrayList<Oyente<Componente>> crearOyentes(Componente objComponente){
        try{
            ArrayList<Oyente<Componente>> objOyentes = new ArrayList<Oyente<Componente>>();
            String strOyentes = objComponente.getStrOyentes();
            StringTokenizer objToken = new StringTokenizer(strOyentes, " ,");
            while(objToken.hasMoreTokens()){
                try{
                    int id = Integer.parseInt(objToken.nextToken());
                    OyenteBase objOyenteBase = GeneradorComponentes.objOyentesBase.get(id);
                    Oyente objOyente = GeneradorComponentes.crearOyente(objOyenteBase);
                    objOyentes.add(objOyente);
                }catch(java.lang.ClassCastException ex){                
                }
            }
            return objOyentes;
        }catch(java.lang.Exception ex){}
        return null;
    }
    
           
    
    /**
     * @DefinicionMetodo
     * @param strClassPath @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ComponenteBaseStandar devolverComponenteBaseClassPath(String strClassPath){
        try{
            for(ComponenteBaseStandar objTempComponenteBase : GeneradorComponentes.objComponentesBase){
                if(objTempComponenteBase.getStrClassPath().equals(strClassPath)) {
                    return objTempComponenteBase;
                }
            }
        }catch(java.lang.Exception ex){}
        return null;        
    }
    
    /**
     * @DefinicionMetodo
     * @param id @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ComponenteBaseStandar devolverComponenteBasePorId(int id){
        try{
            for(ComponenteBaseStandar objTempComponenteBase : GeneradorComponentes.objComponentesBase){
                if(objTempComponenteBase.getId() == id) {
                    return objTempComponenteBase;
                }
            }
        }catch(java.lang.Exception ex){}
        return null;        
    }
    
    /**
     * @DefinicionMetodo
     * @param strClassPath @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ComponenteBaseStandar getContenedorBase(String strClassPath){
        try{
            for(ComponenteBaseStandar objTempContenedorBase : GeneradorComponentes.objContenedoresBase){
                if(objTempContenedorBase.getStrClassPath().equals(strClassPath)) {
                    return objTempContenedorBase;
                }
            }
        }catch(java.lang.Exception ex){}
        return null;        
    }
    
    /**
     * @DefinicionMetodo
     * @param id @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ComponenteBaseStandar getContenedorBase(int id){
        try{
            for(ComponenteBaseStandar objTempContenedorBase : GeneradorComponentes.objContenedoresBase){
                if(objTempContenedorBase.getId() == id) {
                    return objTempContenedorBase;
                }
            }
        }catch(java.lang.Exception ex){}
        return null;        
    }    
    
    /**
     * @DefinicionMetodo
     * @param objComponente @DefinicionParametro
     * @param strNombre @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static Propiedad getObjPropiedad(Componente objComponente, String strNombre){
        try{
            for(Propiedad objPropiedad : objComponente.getObjPropiedadesDisponibles()){
                if(objPropiedad.getName().equalsIgnoreCase(strNombre) || objPropiedad.getAlias().equalsIgnoreCase(strNombre)) {
                    return objPropiedad;
                }            
            }
        }catch(java.lang.Exception ex){}
        return null;        
    }
    
    /**
     * @DefinicionMetodo
     * @param objComponente @DefinicionParametro
     * @param strNombre  @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static String getValorPropiedad(Componente objComponente, String strNombre){
        try{
            for(Propiedad objPropiedad : objComponente.getObjPropiedadesDisponibles()){
                if(objPropiedad.getName().equalsIgnoreCase(strNombre)) {
                    return objPropiedad.getObjParametrosSet().get(0).getStrValue();
                }            
            }
            return strNombre.equalsIgnoreCase("Name") ? objComponente.toString() : "";
        }catch(java.lang.Exception ex){}
        return null;
    }    
    
    /**
     * 
     * @param objComponenteDistribuidorGeneradorUnitario
     * @param objMetodo
     * @return
     */
    public static boolean configurePropertiesToView(ComponenteDistribuidorGeneradorUnitario objComponenteDistribuidorGeneradorUnitario, Method objMetodo){        
        try{
            ComponenteGeneradoInterno objComponenteGeneradoInterno = objComponenteDistribuidorGeneradorUnitario.getObjComponenteGenerador();
            if(objComponenteGeneradoInterno.getObjClassSwing().getSimpleName().equals("JCheckBox")){                                      
                String strPar = objMetodo.getName().substring(3);
                GeneradorComponentes.setValorPropiedadString(objComponenteGeneradoInterno, "Text", strPar);            
            }
            else{
                for(Inicializacion<Componente> objInicializacion : objComponenteDistribuidorGeneradorUnitario.getObjInicializaciones()){
                    if(!objInicializacion.isGenerador() && !objInicializacion.isbStatic()){//Solo Generados
                        for(ParametroInicializacion objParametro : objInicializacion.getObjParametros()){
                            if(!objParametro.getStrFormat().isEmpty()){
                                String strFormat = objParametro.getStrFormat();
                                if(strFormat.equals(Inicializacion.INIT_TITULO_ETIQUETA)){
                                    int id = objInicializacion.getComponente();
                                    String strNombreMetodo = objMetodo.getName();
                                    strNombreMetodo = strNombreMetodo.substring(3);
                                    ComponenteGeneradoSimple objComponenteGenerado = 
                                            objComponenteDistribuidorGeneradorUnitario.getObjComponentesGenerados().get(id);
                                    GeneradorComponentes.setValorPropiedadString(objComponenteGenerado, 
                                            "Text", strNombreMetodo);
                                }
                            }                        
                        }
    //                    return true;
                    }
                }
            }
            return true;
        }catch(java.lang.Exception ex){}
        return false;
    }
    
    /**
     * 
     * @param objComponenteDistribuidorGeneradorString
     * @param objMetodo
     * @return
     */
    public static boolean configurePropertiesToView(ComponenteDistribuidorGeneradorString objComponenteDistribuidorGeneradorString, Method objMetodo){        
        try{
            ComponenteGeneradoInterno objComponenteGeneradoInterno = objComponenteDistribuidorGeneradorString.getObjComponenteGenerador();
            if(objComponenteGeneradoInterno.getObjClassSwing().getSimpleName().equals("JCheckBox")){                                      
                String strPar = objMetodo.getName().substring(3);
                GeneradorComponentes.setValorPropiedadString(objComponenteGeneradoInterno, "Text", strPar);            
            }
            else{
                for(Inicializacion<Componente> objInicializacion : objComponenteDistribuidorGeneradorString.getObjInicializaciones()){
                    if(!objInicializacion.isGenerador() && !objInicializacion.isbStatic()){//Solo Generados
                        for(ParametroInicializacion objParametro : objInicializacion.getObjParametros()){
                            if(!objParametro.getStrFormat().isEmpty()){
                                String strFormat = objParametro.getStrFormat();
                                if(strFormat.equals(Inicializacion.INIT_TITULO_ETIQUETA)){
                                    int id = objInicializacion.getComponente();
                                    String strNombreMetodo = objMetodo.getName();
                                    strNombreMetodo = strNombreMetodo.substring(3);
                                    ComponenteGeneradoSimple objComponenteGenerado = 
                                            objComponenteDistribuidorGeneradorString.getObjComponentesGenerados().get(id);
                                    GeneradorComponentes.setValorPropiedadString(objComponenteGenerado, 
                                            "Text", strNombreMetodo);
                                }
                            }                        
                        }
    //                    return true;
                    }
                }
            }
            return true;
        }catch(java.lang.Exception ex){}
        return false;
    }
    
    /**
     * 
     * @param objComponenteGeneradorEnum
     * @param objMethod
     * @return
     */
    public static boolean configurePropertiesToView(ComponenteDistribuidorGeneradorEnum objComponenteGeneradorEnum, Method objMethod){        
        try{
            for(Inicializacion<Componente> objInicializacion : objComponenteGeneradorEnum.getObjInicializaciones()){
                if(!objInicializacion.isGenerador() && !objInicializacion.isbStatic()){//Solo Generados
                    for(ParametroInicializacion objParametro : objInicializacion.getObjParametros()){
                        if(!objParametro.getStrFormat().isEmpty()){
                            String strFormat = objParametro.getStrFormat();
                            if(strFormat.equals(Inicializacion.INIT_TITULO_ETIQUETA)){
                                int id = objInicializacion.getComponente();
                                String strNombreMetodo = objMethod.getName();
                                strNombreMetodo = strNombreMetodo.substring(3);
                                ComponenteGeneradoSimple objComponenteGenerado = 
                                        objComponenteGeneradorEnum.getObjComponentesGenerados().get(id);
                                GeneradorComponentes.setValorPropiedadString(objComponenteGenerado, 
                                        "Text", strNombreMetodo);
                            }
                        }                        
                    }
                    return true;
                }
            }
        }catch(java.lang.Exception ex){}
        return false;
    }      
    
    /**
     * 
     * @param objComponenteDistribuidorGeneradorVinculador
     * @param objMethod
     * @return
     */
    public static boolean configurePropertiesToView(ComponenteDistribuidorGeneradorVinculador objComponenteDistribuidorGeneradorVinculador, Method objMethod){        
        try{
            for(Inicializacion<Componente> objInicializacion : objComponenteDistribuidorGeneradorVinculador.getObjInicializaciones()){
                if(!objInicializacion.isGenerador() && !objInicializacion.isbStatic()){//Solo Generados
                    for(ParametroInicializacion objParametro : objInicializacion.getObjParametros()){
                        if(!objParametro.getStrFormat().isEmpty()){
                            String strFormat = objParametro.getStrFormat();
                            if(strFormat.equals(Inicializacion.INIT_TITULO_ETIQUETA)){
                                int id = objInicializacion.getComponente();
                                String strNombreMetodo = objMethod.getName();
                                strNombreMetodo = strNombreMetodo.substring(3);
                                ComponenteGeneradoSimple objComponenteGenerado = 
                                        objComponenteDistribuidorGeneradorVinculador.getObjComponentesGenerados().get(id);
                                GeneradorComponentes.setValorPropiedadString(objComponenteGenerado, 
                                        "Text", strNombreMetodo);
                            }
                        }                        
                    }
                    return true;
                }
            }
        }catch(java.lang.Exception ex){}        
        return false;
    }
    
    /**
     * 
     * @param objComponente
     * @param objMethod
     * @return
     */
    public static boolean configurePropertiesToView(ComponenteDistribuidorGeneradorMetodoSetter objComponente, Method objMethod){
        if(objComponente != null){
            ComponenteDistribuidorGenerador objComponenteGenerador = objComponente.getObjComponenteGeneradorParam();
            if(objComponenteGenerador instanceof ComponenteDistribuidorGeneradorUnitario){
                ComponenteDistribuidorGeneradorUnitario objComponenteGeneradorUnitario = (ComponenteDistribuidorGeneradorUnitario) objComponenteGenerador;
                return GeneradorComponentes.configurePropertiesToView(objComponenteGeneradorUnitario, objMethod);            
            }
            else if(objComponenteGenerador instanceof ComponenteDistribuidorGeneradorString){
                ComponenteDistribuidorGeneradorString objComponenteGeneradorString = (ComponenteDistribuidorGeneradorString) objComponenteGenerador;
                return GeneradorComponentes.configurePropertiesToView(objComponenteGeneradorString, objMethod);            
            }
            else if(objComponenteGenerador instanceof ComponenteDistribuidorGeneradorEnum){
                ComponenteDistribuidorGeneradorEnum objComponenteGeneradorEnum = (ComponenteDistribuidorGeneradorEnum) objComponenteGenerador;
                return GeneradorComponentes.configurePropertiesToView(objComponenteGeneradorEnum, objMethod);            
            }
            else if(objComponenteGenerador instanceof ComponenteDistribuidorGeneradorVinculador){
                ComponenteDistribuidorGeneradorVinculador objComponenteGeneradorVinculador = (ComponenteDistribuidorGeneradorVinculador) objComponenteGenerador;
                return GeneradorComponentes.configurePropertiesToView(objComponenteGeneradorVinculador, objMethod);            
            }
            else if(objComponenteGenerador instanceof ComponenteDistribuidorGeneradorClaseCompleja){
                ComponenteDistribuidorGeneradorClaseCompleja objComponenteGeneradorClase = (ComponenteDistribuidorGeneradorClaseCompleja) objComponenteGenerador;
                return GeneradorComponentes.configurePropertiesToView(objComponenteGeneradorClase);            
            }
        }else{
            UtilRender.printlnConsole("Objeto componente Nulo.", UtilRender.ACTION_NORMAL, false);            
        }        
        return false;
    }
    
    /**
     * 
     * @param objComponente
     * @param objMethod
     * @return
     */
    public static boolean configurePropertiesToView(ComponenteDistribuidorGeneradorMetodoGetter objComponente, Method objMethod){
        if(objComponente != null){
            ComponenteDistribuidorGenerador objComponenteGenerador = objComponente.getObjComponenteGeneradorReturn();
            if(objComponenteGenerador instanceof ComponenteDistribuidorGeneradorUnitario){
                ComponenteDistribuidorGeneradorUnitario objComponenteGeneradorUnitario = (ComponenteDistribuidorGeneradorUnitario) objComponenteGenerador;
                return GeneradorComponentes.configurePropertiesToView(objComponenteGeneradorUnitario, objMethod);            
            }
            else if(objComponenteGenerador instanceof ComponenteDistribuidorGeneradorString){
                ComponenteDistribuidorGeneradorString objComponenteGeneradorString = (ComponenteDistribuidorGeneradorString) objComponenteGenerador;
                return GeneradorComponentes.configurePropertiesToView(objComponenteGeneradorString, objMethod);            
            }
            else if(objComponenteGenerador instanceof ComponenteDistribuidorGeneradorEnum){
                ComponenteDistribuidorGeneradorEnum objComponenteGeneradorEnumSimple = (ComponenteDistribuidorGeneradorEnum) objComponenteGenerador;
                return GeneradorComponentes.configurePropertiesToView(objComponenteGeneradorEnumSimple, objMethod);            
            }
            else if(objComponenteGenerador instanceof ComponenteDistribuidorGeneradorClaseCompleja){
                ComponenteDistribuidorGeneradorClaseCompleja objComponenteGeneradorClase = (ComponenteDistribuidorGeneradorClaseCompleja) objComponenteGenerador;
                return GeneradorComponentes.configurePropertiesToView(objComponenteGeneradorClase);            
            }
        }else{
            UtilRender.printlnConsole("Objeto componente Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
        return false;
    }
    
    /**
     * 
     * @param objComponenteGeneradorClase
     * @return
     */
    public static boolean configurePropertiesToView(ComponenteDistribuidorGeneradorClaseCompleja objComponenteGeneradorClase){
//        for(Componente objComponente : objComponenteGeneradorClase.getObjComponentes()){
//            if(objComponente instanceof ComponenteDistribuidorGeneradorMetodoGetter){
//                configurePropertiesToView((ComponenteDistribuidorGeneradorMetodoGetter)objComponente);
//            }
//            else if(objComponente instanceof ComponenteDistribuidorGeneradorMetodoSetter){
//                configurePropertiesToView((ComponenteDistribuidorGeneradorMetodoSetter)objComponente);
//            }            
//        }        
        return true;
    }
    
    /**
     * 
     * @param objComponente
     * @param strNombre
     * @param strNuevoValor
     * @return
     */
    public static boolean setValorPropiedadString(Componente objComponente, String strNombre, String strNuevoValor){
        Propiedad objPropiedad = getObjPropiedad(objComponente, strNombre);
        if(objPropiedad != null){
            objPropiedad.getObjParametrosSet().get(0).setStrValue(strNuevoValor);
            return true;
        }
        return false;
    }        
    
    /**
     * 
     * @param objComponente
     * @return
     */
    public static ArrayList<Propiedad> inicializarPropiedadesDisponiblesComponenteBase(Componente objComponente){
        if(objComponente != null){
            //Se cren las Propiedades del Control
            ArrayList<Propiedad> objPropiedades = GeneradorComponentes.crearPropiedadesDisponibles(objComponente);
            //Se evalua si inicializa propiedades locales o de sus componentes generados
            if(objComponente.isInicializacion() && !(objComponente instanceof ComponenteGeneradoSimple)){
                //se recorre la coleccion
                for(Inicializacion<Componente> objInicializacion : objComponente.getObjInicializaciones()){
                    //evalua incializacion local o generado
                    if(objInicializacion.isGenerador()){
                        int idPropiedad = objInicializacion.getPropiedad();
                        Propiedad objPropiedad = objPropiedades.get(idPropiedad);
                        if(objInicializacion.getObjParametros().size() == objPropiedad.getObjParametrosSet().size()){
                            int size = objInicializacion.getObjParametros().size();
                            ArrayList<ParametroPropiedad> objParametrosPropiedad = objPropiedad.getObjParametrosSet();
                            ArrayList<ParametroInicializacion> objParametrosInicializacion = objInicializacion.getObjParametros();
                            for(int i = 0; i < size; i++){
                                ParametroPropiedad objParametroPropiedad = objParametrosPropiedad.get(i);
                                ParametroInicializacion objParametroInicializacion = objParametrosInicializacion.get(i);

                                objParametroPropiedad.setStrValue(objParametroInicializacion.getStrValue());

                                objParametrosPropiedad.set(i, objParametroPropiedad);                       
                            }                    
                            objPropiedad.setAplicada(true);
                            objPropiedad.setInicializado(Propiedad.INIT_PROPERTIES);
                            objPropiedad.setObjParametrosSet(objParametrosPropiedad);
                            objPropiedades.set(idPropiedad, objPropiedad);
                            System.out.println("Propiedad Inicializada: " + objComponente.getStrClassPath() + " - " + objPropiedad.getName());        
                        }
                    }
                    else{//se aplicará a un componente generado por lo tanto se debe obtener la coleccion de esos
                        //componentes luego extraer el indicado y sus propiedades
                        int idPropiedad = objInicializacion.getPropiedad();
                        int idComponente = objInicializacion.getComponente();
                        //se obtiene el Componente Generado
                        ComponenteGeneradoSimple objComponenteGenerado = devolverComponenteGenerado(objComponente, idComponente);
                        if(objComponenteGenerado != null){                        
                            try{
                                //se obtiene la Propiedad
                                Propiedad objPropiedad = objComponenteGenerado.getObjPropiedadesDisponibles().get(idPropiedad);
                                if(objInicializacion.getObjParametros().size() == objPropiedad.getObjParametrosSet().size()){
                                    int size = objInicializacion.getObjParametros().size();
                                    ArrayList<ParametroPropiedad> objParametrosPropiedad = objPropiedad.getObjParametrosSet();
                                    ArrayList<ParametroInicializacion> objParametrosInicializacion = objInicializacion.getObjParametros();
                                    for(int i = 0; i < size; i++){
                                        ParametroPropiedad objParametroPropiedad = objParametrosPropiedad.get(i);
                                        ParametroInicializacion objParametroInicializacion = objParametrosInicializacion.get(i);

                                        objParametroPropiedad.setStrValue(objParametroInicializacion.getStrValue());

                                        objParametrosPropiedad.set(i, objParametroPropiedad);                       
                                    }                    
                                    objPropiedad.setAplicada(true);
                                    objPropiedad.setInicializado(Propiedad.INIT_PROPERTIES);
                                    objPropiedad.setObjParametrosSet(objParametrosPropiedad);
                                    objComponenteGenerado.getObjPropiedadesDisponibles().set(idPropiedad, objPropiedad);
                                    if(objComponente instanceof ComponenteDistribuidorGeneradorUnitario){
                                        ComponenteDistribuidorGeneradorUnitario objComponenteGenerador = (ComponenteDistribuidorGeneradorUnitario) objComponente;
                                        objComponenteGenerador.getObjComponentesGenerados().set(idComponente, objComponenteGenerado);    
                                        objComponente = objComponenteGenerador;
                                    }
                                    else if(objComponente instanceof ComponenteDistribuidorGeneradorString){
                                        ComponenteDistribuidorGeneradorString objComponenteGenerador = (ComponenteDistribuidorGeneradorString) objComponente;
                                        objComponenteGenerador.getObjComponentesGenerados().set(idComponente, objComponenteGenerado);    
                                        objComponente = objComponenteGenerador;
                                    }
                                    else if(objComponente instanceof ComponenteDistribuidorExtra){
                                        ComponenteDistribuidorExtra objComponenteExtra = (ComponenteDistribuidorExtra) objComponente;
                                        objComponenteExtra.getObjComponentesGenerados().set(idComponente, objComponenteGenerado);
                                        objComponente = objComponenteExtra;
                                    }
                                    System.out.println("Propiedad Inicializada: " + objComponenteGenerado.getStrClassPath() + " - " + objPropiedad.getName());                                        
                                }
                            } catch(java.lang.NullPointerException ex){                            
                            } catch(java.lang.ArrayIndexOutOfBoundsException ex){                            
                            }
                        }
                    }
                }
                for(Propiedad objPropiedadInicial : objPropiedades){
                    if(objPropiedadInicial.getName().equalsIgnoreCase("name")){
                       Propiedad objPropiedadActualizada = iniciarPropiedadNombre(
                               objComponente, objPropiedadInicial);
                       if(objPropiedadActualizada != null){
                           objPropiedadActualizada.setAplicada(true);
                           int i = objPropiedades.indexOf(objPropiedadInicial);
                           objPropiedades.set(i, objPropiedadActualizada);
                           System.out.println("Propiedad Inicializada: " + objComponente.getStrClassPath() + " - " + objPropiedadActualizada.getName());        
                       }
                    }
                }
            }
            else{
                for(Propiedad objPropiedadInicial : objPropiedades){
                    if(objPropiedadInicial.getName().equalsIgnoreCase("name")){
                       Propiedad objPropiedadActualizada = iniciarPropiedadNombre(
                               objComponente, objPropiedadInicial);
                       if(objPropiedadActualizada != null){
                           objPropiedadActualizada.setAplicada(true);
                           int i = objPropiedades.indexOf(objPropiedadInicial);
                           objPropiedades.set(i, objPropiedadActualizada);
                           System.out.println("Propiedad Inicializada: " + objComponente.getStrClassPath() + " - " + objPropiedadActualizada.getName());        
                       }
                    }
                    else if(objPropiedadInicial.getName().equalsIgnoreCase("text") &&
                            objPropiedadInicial.getInicializado() == Propiedad.INIT_NULL){                    
                       Propiedad objPropiedadActualizada = iniciarPropiedadTexto(
                               objComponente, objPropiedadInicial);
                       if(objPropiedadActualizada != null){
                           objPropiedadActualizada.setAplicada(true);
                           int i = objPropiedades.indexOf(objPropiedadInicial);
                           objPropiedades.set(i, objPropiedadActualizada);
                           System.out.println("Propiedad Inicializada: " + objComponente.getStrClassPath() + " - " + objPropiedadActualizada.getName());        
                       }
                    }
                }
            }
            return objPropiedades;
        }else{
            UtilRender.printlnConsole("Objeto Componente Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
        return null;
    }
    
    /**
     * 
     * @param objComponente
     * @param objMetodo
     * @return
     */
    public static ArrayList<Propiedad> inicializarPropiedadesDisponiblesComponenteMetodo(ComponenteDistribuidorGeneradorMetodo objComponente, Method objMetodo){
        //Se cren las Propiedades del Control
        try{
            ArrayList<Propiedad> objPropiedades = GeneradorComponentes.crearPropiedadesDisponibles(objComponente);
            //se recorre la coleccion
            for(Propiedad objPropiedadInicial : objPropiedades){
                if(objPropiedadInicial.getName().equalsIgnoreCase("name")){
                   Propiedad objPropiedadActualizada = iniciarPropiedadNombre(
                           objComponente, objPropiedadInicial, objMetodo);
                   if(objPropiedadActualizada != null){
                       objPropiedadActualizada.setAplicada(true);
                       int i = objPropiedades.indexOf(objPropiedadInicial);
                       objPropiedades.set(i, objPropiedadActualizada);
                       System.out.println("Propiedad Inicializada: " + objComponente.getStrClassPath() + " - " + objPropiedadActualizada.getName());        
                   }
                }
                else if(objPropiedadInicial.getName().equalsIgnoreCase("text") &&
                        objPropiedadInicial.getInicializado() == Propiedad.INIT_NULL){                    
                   Propiedad objPropiedadActualizada = iniciarPropiedadTexto(
                           objComponente, objPropiedadInicial);
                   if(objPropiedadActualizada != null){
                       objPropiedadActualizada.setAplicada(true);
                       int i = objPropiedades.indexOf(objPropiedadInicial);
                       objPropiedades.set(i, objPropiedadActualizada);
                       System.out.println("Propiedad Inicializada: " + objComponente.getStrClassPath() + " - " + objPropiedadActualizada.getName());        
                   }
                }
            }        
            return objPropiedades;
        }catch(java.lang.NullPointerException ex){            
        }catch(java.lang.ArrayIndexOutOfBoundsException ex){            
        }
        return null;
    }
    
    /**
     * @DefinicionMetodo
     * @param objComponenteGeneradorUnitario @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ArrayList<Propiedad> inicializarPropiedadesPersonalizadas(ComponenteDistribuidorGeneradorUnitario objComponenteGeneradorUnitario){
        try{
            //Se cren las Propiedades del Control
            ArrayList<Propiedad> objPropiedades = objComponenteGeneradorUnitario.getObjPropiedadesDisponibles();
            //ArrayList<Propiedad> objPropiedades = crearPropiedades(objComponenteGeneradorSimple);
            //Se evalua si inicializa propiedades locales o de sus componentes generados
            if(objComponenteGeneradorUnitario.isInicializacion()){
                //se recorre la coleccion
                for(Inicializacion<Componente> objInicializacion : objComponenteGeneradorUnitario.getObjInicializaciones()){
                    //evalua incializacion local o generado
                    if(objInicializacion.isGenerador()){
                        int idPropiedad = objInicializacion.getPropiedad();
                        Propiedad objPropiedad = objPropiedades.get(idPropiedad);
                        if(objInicializacion.getObjParametros().size() == objPropiedad.getObjParametrosSet().size()){
                            int size = objInicializacion.getObjParametros().size();
                            ArrayList<ParametroPropiedad> objParametrosPropiedad = objPropiedad.getObjParametrosSet();
                            ArrayList<ParametroInicializacion> objParametrosInicializacion = objInicializacion.getObjParametros();
                            for(int i = 0; i < size; i++){
                                ParametroPropiedad objParametroPropiedad = objParametrosPropiedad.get(i);
                                ParametroInicializacion objParametroInicializacion = objParametrosInicializacion.get(i);

                                objParametroPropiedad.setStrValue(objParametroInicializacion.getStrValue());

                                objParametrosPropiedad.set(i, objParametroPropiedad);                       
                            }                    
                            objPropiedad.setAplicada(true);
                            objPropiedad.setInicializado(Propiedad.INIT_PROPERTIES);
                            objPropiedad.setObjParametrosSet(objParametrosPropiedad);
                            objPropiedades.set(idPropiedad, objPropiedad);
                            System.out.println("Propiedad Inicializada: " + objComponenteGeneradorUnitario.getStrClassPath() + " - " + objPropiedad.getName());        
                        }
                    }
                    else{//se aplicará a un componente generado por lo tanto se debe obtener la coleccion de esos
                        //componentes luego extraer el indicado y sus propiedades
                        int idPropiedad = objInicializacion.getPropiedad();
                        int idComponente = objInicializacion.getComponente();
                        //se obtiene el Componente Generado
                        ComponenteGeneradoSimple objComponenteGenerado = objComponenteGeneradorUnitario.getObjComponentesGenerados().get(idComponente);
                        if(objComponenteGenerado != null){                        
                            try{
                                //se obtiene la Propiedad
                                Propiedad objPropiedad = objComponenteGenerado.getObjPropiedadesDisponibles().get(idPropiedad);
                                if(objInicializacion.getObjParametros().size() == objPropiedad.getObjParametrosSet().size()){
                                    int size = objInicializacion.getObjParametros().size();
                                    ArrayList<ParametroPropiedad> objParametrosPropiedad = objPropiedad.getObjParametrosSet();
                                    ArrayList<ParametroInicializacion> objParametrosInicializacion = objInicializacion.getObjParametros();
                                    for(int i = 0; i < size; i++){
                                        ParametroPropiedad objParametroPropiedad = objParametrosPropiedad.get(i);
                                        ParametroInicializacion objParametroInicializacion = objParametrosInicializacion.get(i);

                                        objParametroPropiedad.setStrValue(objParametroInicializacion.getStrValue());

                                        objParametrosPropiedad.set(i, objParametroPropiedad);                       
                                    }                    
                                    objPropiedad.setAplicada(true);
                                    objPropiedad.setInicializado(Propiedad.INIT_PROPERTIES);
                                    objPropiedad.setObjParametrosSet(objParametrosPropiedad);
                                    objComponenteGenerado.getObjPropiedadesDisponibles().set(idPropiedad, objPropiedad);                                                                                                 
                                    objComponenteGeneradorUnitario.getObjComponentesGenerados().set(idComponente, objComponenteGenerado);    
                                    System.out.println("Propiedad Inicializada: " + objComponenteGenerado.getStrClassPath() + " - " + objPropiedad.getName());                                        
                                }
                            } catch(java.lang.NullPointerException ex){                            
                            } catch(java.lang.ArrayIndexOutOfBoundsException ex){                            
                            }
                        }
                    }
                }
                for(Propiedad objPropiedadInicial : objPropiedades){
                    if(objPropiedadInicial.getName().equalsIgnoreCase("name")){
                       Propiedad objPropiedadActualizada = iniciarPropiedadNombre(
                               objComponenteGeneradorUnitario, objPropiedadInicial);
                       if(objPropiedadActualizada != null){
                           objPropiedadActualizada.setAplicada(true);
                           int i = objPropiedades.indexOf(objPropiedadInicial);
                           objPropiedades.set(i, objPropiedadActualizada);
                           System.out.println("Propiedad Inicializada: " + objComponenteGeneradorUnitario.getStrClassPath() + " - " + objPropiedadActualizada.getName());        
                       }
                    }
                }
            }        
            return objPropiedades;
        }catch(java.lang.NullPointerException ex){}
        return null;
    }
    
    /**
     * @DefinicionMetodo
     * @param objComponenteGeneradorString @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ArrayList<Propiedad> inicializarPropiedadesPersonalizadas(ComponenteDistribuidorGeneradorString objComponenteGeneradorString){
        try{
            //Se cren las Propiedades del Control
            ArrayList<Propiedad> objPropiedades = objComponenteGeneradorString.getObjPropiedadesDisponibles();
            //ArrayList<Propiedad> objPropiedades = crearPropiedades(objComponenteGeneradorSimple);
            //Se evalua si inicializa propiedades locales o de sus componentes generados
            if(objComponenteGeneradorString.isInicializacion()){
                //se recorre la coleccion
                for(Inicializacion<Componente> objInicializacion : objComponenteGeneradorString.getObjInicializaciones()){
                    //evalua incializacion local o generado
                    if(objInicializacion.isGenerador()){
                        int idPropiedad = objInicializacion.getPropiedad();
                        Propiedad objPropiedad = objPropiedades.get(idPropiedad);
                        if(objInicializacion.getObjParametros().size() == objPropiedad.getObjParametrosSet().size()){
                            int size = objInicializacion.getObjParametros().size();
                            ArrayList<ParametroPropiedad> objParametrosPropiedad = objPropiedad.getObjParametrosSet();
                            ArrayList<ParametroInicializacion> objParametrosInicializacion = objInicializacion.getObjParametros();
                            for(int i = 0; i < size; i++){
                                ParametroPropiedad objParametroPropiedad = objParametrosPropiedad.get(i);
                                ParametroInicializacion objParametroInicializacion = objParametrosInicializacion.get(i);

                                objParametroPropiedad.setStrValue(objParametroInicializacion.getStrValue());

                                objParametrosPropiedad.set(i, objParametroPropiedad);                       
                            }                    
                            objPropiedad.setAplicada(true);
                            objPropiedad.setInicializado(Propiedad.INIT_PROPERTIES);
                            objPropiedad.setObjParametrosSet(objParametrosPropiedad);
                            objPropiedades.set(idPropiedad, objPropiedad);
                            System.out.println("Propiedad Inicializada: " + objComponenteGeneradorString.getStrClassPath() + " - " + objPropiedad.getName());        
                        }
                    }
                    else{//se aplicará a un componente generado por lo tanto se debe obtener la coleccion de esos
                        //componentes luego extraer el indicado y sus propiedades
                        int idPropiedad = objInicializacion.getPropiedad();
                        int idComponente = objInicializacion.getComponente();
                        //se obtiene el Componente Generado
                        ComponenteGeneradoSimple objComponenteGenerado = objComponenteGeneradorString.getObjComponentesGenerados().get(idComponente);
                        if(objComponenteGenerado != null){                        
                            try{
                                //se obtiene la Propiedad
                                Propiedad objPropiedad = objComponenteGenerado.getObjPropiedadesDisponibles().get(idPropiedad);
                                if(objInicializacion.getObjParametros().size() == objPropiedad.getObjParametrosSet().size()){
                                    int size = objInicializacion.getObjParametros().size();
                                    ArrayList<ParametroPropiedad> objParametrosPropiedad = objPropiedad.getObjParametrosSet();
                                    ArrayList<ParametroInicializacion> objParametrosInicializacion = objInicializacion.getObjParametros();
                                    for(int i = 0; i < size; i++){
                                        ParametroPropiedad objParametroPropiedad = objParametrosPropiedad.get(i);
                                        ParametroInicializacion objParametroInicializacion = objParametrosInicializacion.get(i);

                                        objParametroPropiedad.setStrValue(objParametroInicializacion.getStrValue());

                                        objParametrosPropiedad.set(i, objParametroPropiedad);                       
                                    }                    
                                    objPropiedad.setAplicada(true);
                                    objPropiedad.setInicializado(Propiedad.INIT_PROPERTIES);
                                    objPropiedad.setObjParametrosSet(objParametrosPropiedad);
                                    objComponenteGenerado.getObjPropiedadesDisponibles().set(idPropiedad, objPropiedad);                                                                                                 
                                    objComponenteGeneradorString.getObjComponentesGenerados().set(idComponente, objComponenteGenerado);    
                                    System.out.println("Propiedad Inicializada: " + objComponenteGenerado.getStrClassPath() + " - " + objPropiedad.getName());                                        
                                }
                            } catch(java.lang.NullPointerException ex){                            
                            } catch(java.lang.ArrayIndexOutOfBoundsException ex){                            
                            }
                        }
                    }
                }
                for(Propiedad objPropiedadInicial : objPropiedades){
                    if(objPropiedadInicial.getName().equalsIgnoreCase("name")){
                       Propiedad objPropiedadActualizada = iniciarPropiedadNombre(
                               objComponenteGeneradorString, objPropiedadInicial);
                       if(objPropiedadActualizada != null){
                           objPropiedadActualizada.setAplicada(true);
                           int i = objPropiedades.indexOf(objPropiedadInicial);
                           objPropiedades.set(i, objPropiedadActualizada);
                           System.out.println("Propiedad Inicializada: " + objComponenteGeneradorString.getStrClassPath() + " - " + objPropiedadActualizada.getName());        
                       }
                    }
                }
            }        
            return objPropiedades;
        }catch(java.lang.NullPointerException ex){}
        return null;
    }
    
    /**
     * @DefinicionMetodo
     * @param objComponenteGeneradorEnum @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ArrayList<Propiedad> inicializarPropiedadesPersonalizadas(ComponenteDistribuidorGeneradorEnum objComponenteGeneradorEnum){
        try{
            //Se cren las Propiedades del Control
            ArrayList<Propiedad> objPropiedades = objComponenteGeneradorEnum.getObjPropiedadesDisponibles();
            //ArrayList<Propiedad> objPropiedades = crearPropiedades(objComponenteGeneradorSimple);
            //Se evalua si inicializa propiedades locales o de sus componentes generados
            if(objComponenteGeneradorEnum.isInicializacion()){
                //se recorre la coleccion
                for(Inicializacion<Componente> objInicializacion : objComponenteGeneradorEnum.getObjInicializaciones()){
                    //evalua incializacion local o generado
                    if(objInicializacion.isGenerador()){
                        int idPropiedad = objInicializacion.getPropiedad();
                        Propiedad objPropiedad = objPropiedades.get(idPropiedad);
                        if(objInicializacion.getObjParametros().size() == objPropiedad.getObjParametrosSet().size()){
                            int size = objInicializacion.getObjParametros().size();
                            ArrayList<ParametroPropiedad> objParametrosPropiedad = objPropiedad.getObjParametrosSet();
                            ArrayList<ParametroInicializacion> objParametrosInicializacion = objInicializacion.getObjParametros();
                            for(int i = 0; i < size; i++){
                                ParametroPropiedad objParametroPropiedad = objParametrosPropiedad.get(i);
                                ParametroInicializacion objParametroInicializacion = objParametrosInicializacion.get(i);

                                objParametroPropiedad.setStrValue(objParametroInicializacion.getStrValue());

                                objParametrosPropiedad.set(i, objParametroPropiedad);                       
                            }                    
                            objPropiedad.setAplicada(true);
                            objPropiedad.setInicializado(Propiedad.INIT_PROPERTIES);
                            objPropiedad.setObjParametrosSet(objParametrosPropiedad);
                            objPropiedades.set(idPropiedad, objPropiedad);
                            System.out.println("Propiedad Inicializada: " + objComponenteGeneradorEnum.getStrClassPath() + " - " + objPropiedad.getName());        
                        }
                    }
                    else{//se aplicará a un componente generado por lo tanto se debe obtener la coleccion de esos
                        //componentes luego extraer el indicado y sus propiedades
                        int idPropiedad = objInicializacion.getPropiedad();
                        int idComponente = objInicializacion.getComponente();
                        //se obtiene el Componente Generado
                        ComponenteGeneradoSimple objComponenteGenerado = objComponenteGeneradorEnum.getObjComponentesGenerados().get(idComponente);
                        if(objComponenteGenerado != null){                        
                            try{
                                //se obtiene la Propiedad
                                Propiedad objPropiedad = objComponenteGenerado.getObjPropiedadesDisponibles().get(idPropiedad);
                                if(objInicializacion.getObjParametros().size() == objPropiedad.getObjParametrosSet().size()){
                                    int size = objInicializacion.getObjParametros().size();
                                    ArrayList<ParametroPropiedad> objParametrosPropiedad = objPropiedad.getObjParametrosSet();
                                    ArrayList<ParametroInicializacion> objParametrosInicializacion = objInicializacion.getObjParametros();
                                    for(int i = 0; i < size; i++){
                                        ParametroPropiedad objParametroPropiedad = objParametrosPropiedad.get(i);
                                        ParametroInicializacion objParametroInicializacion = objParametrosInicializacion.get(i);

                                        objParametroPropiedad.setStrValue(objParametroInicializacion.getStrValue());

                                        objParametrosPropiedad.set(i, objParametroPropiedad);                       
                                    }                    
                                    objPropiedad.setAplicada(true);
                                    objPropiedad.setInicializado(Propiedad.INIT_PROPERTIES);
                                    objPropiedad.setObjParametrosSet(objParametrosPropiedad);
                                    objComponenteGenerado.getObjPropiedadesDisponibles().set(idPropiedad, objPropiedad);                                                                                                 
                                    objComponenteGeneradorEnum.getObjComponentesGenerados().set(idComponente, objComponenteGenerado);    
                                    System.out.println("Propiedad Inicializada: " + objComponenteGenerado.getStrClassPath() + " - " + objPropiedad.getName());                                        
                                }
                            } catch(java.lang.NullPointerException ex){                            
                            } catch(java.lang.ArrayIndexOutOfBoundsException ex){                            
                            }
                        }
                    }
                }
                for(Propiedad objPropiedadInicial : objPropiedades){
                    if(objPropiedadInicial.getName().equalsIgnoreCase("name")){
                       Propiedad objPropiedadActualizada = iniciarPropiedadNombre(
                               objComponenteGeneradorEnum, objPropiedadInicial);
                       if(objPropiedadActualizada != null){
                           objPropiedadActualizada.setAplicada(true);
                           int i = objPropiedades.indexOf(objPropiedadInicial);
                           objPropiedades.set(i, objPropiedadActualizada);
                           System.out.println("Propiedad Inicializada: " + objComponenteGeneradorEnum.getStrClassPath() + " - " + objPropiedadActualizada.getName());        
                       }
                    }
                }
            }        
            return objPropiedades;
        }catch(java.lang.NullPointerException ex){}
        return null;
    }
    
    /**
     * @DefinicionMetodo
     * @param objComponenteGeneradorVinculador @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ArrayList<Propiedad> inicializarPropiedadesPersonalizadas(ComponenteDistribuidorGeneradorVinculador objComponenteGeneradorVinculador){
        try{
            //Se cren las Propiedades del Control
            ArrayList<Propiedad> objPropiedades = objComponenteGeneradorVinculador.getObjPropiedadesDisponibles();
            //ArrayList<Propiedad> objPropiedades = crearPropiedades(objComponenteGeneradorSimple);
            //Se evalua si inicializa propiedades locales o de sus componentes generados
            if(objComponenteGeneradorVinculador.isInicializacion()){
                //se recorre la coleccion
                for(Inicializacion<Componente> objInicializacion : objComponenteGeneradorVinculador.getObjInicializaciones()){
                    //evalua incializacion local o generado
                    if(objInicializacion.isGenerador()){
                        int idPropiedad = objInicializacion.getPropiedad();
                        Propiedad objPropiedad = objPropiedades.get(idPropiedad);
                        if(objInicializacion.getObjParametros().size() == objPropiedad.getObjParametrosSet().size()){
                            int size = objInicializacion.getObjParametros().size();
                            ArrayList<ParametroPropiedad> objParametrosPropiedad = objPropiedad.getObjParametrosSet();
                            ArrayList<ParametroInicializacion> objParametrosInicializacion = objInicializacion.getObjParametros();
                            for(int i = 0; i < size; i++){
                                ParametroPropiedad objParametroPropiedad = objParametrosPropiedad.get(i);
                                ParametroInicializacion objParametroInicializacion = objParametrosInicializacion.get(i);

                                objParametroPropiedad.setStrValue(objParametroInicializacion.getStrValue());

                                objParametrosPropiedad.set(i, objParametroPropiedad);                       
                            }                    
                            objPropiedad.setAplicada(true);
                            objPropiedad.setInicializado(Propiedad.INIT_PROPERTIES);
                            objPropiedad.setObjParametrosSet(objParametrosPropiedad);
                            objPropiedades.set(idPropiedad, objPropiedad);
                            System.out.println("Propiedad Inicializada: " + objComponenteGeneradorVinculador.getStrClassPath() + " - " + objPropiedad.getName());        
                        }
                    }
                    else{//se aplicará a un componente generado por lo tanto se debe obtener la coleccion de esos
                        //componentes luego extraer el indicado y sus propiedades
                        int idPropiedad = objInicializacion.getPropiedad();
                        int idComponente = objInicializacion.getComponente();
                        //se obtiene el Componente Generado
                        ComponenteGeneradoSimple objComponenteGenerado = objComponenteGeneradorVinculador.getObjComponentesGenerados().get(idComponente);
                        if(objComponenteGenerado != null){                        
                            try{
                                //se obtiene la Propiedad
                                Propiedad objPropiedad = objComponenteGenerado.getObjPropiedadesDisponibles().get(idPropiedad);
                                if(objInicializacion.getObjParametros().size() == objPropiedad.getObjParametrosSet().size()){
                                    int size = objInicializacion.getObjParametros().size();
                                    ArrayList<ParametroPropiedad> objParametrosPropiedad = objPropiedad.getObjParametrosSet();
                                    ArrayList<ParametroInicializacion> objParametrosInicializacion = objInicializacion.getObjParametros();
                                    for(int i = 0; i < size; i++){
                                        ParametroPropiedad objParametroPropiedad = objParametrosPropiedad.get(i);
                                        ParametroInicializacion objParametroInicializacion = objParametrosInicializacion.get(i);

                                        objParametroPropiedad.setStrValue(objParametroInicializacion.getStrValue());

                                        objParametrosPropiedad.set(i, objParametroPropiedad);                       
                                    }                    
                                    objPropiedad.setAplicada(true);
                                    objPropiedad.setInicializado(Propiedad.INIT_PROPERTIES);
                                    objPropiedad.setObjParametrosSet(objParametrosPropiedad);
                                    objComponenteGenerado.getObjPropiedadesDisponibles().set(idPropiedad, objPropiedad);                                                                                                 
                                    objComponenteGeneradorVinculador.getObjComponentesGenerados().set(idComponente, objComponenteGenerado);    
                                    System.out.println("Propiedad Inicializada: " + objComponenteGenerado.getStrClassPath() + " - " + objPropiedad.getName());                                        
                                }
                            } catch(java.lang.NullPointerException ex){                            
                            } catch(java.lang.ArrayIndexOutOfBoundsException ex){                            
                            }
                        }
                    }
                }
                for(Propiedad objPropiedadInicial : objPropiedades){
                    if(objPropiedadInicial.getName().equalsIgnoreCase("name")){
                       Propiedad objPropiedadActualizada = iniciarPropiedadNombre(
                               objComponenteGeneradorVinculador, objPropiedadInicial);
                       if(objPropiedadActualizada != null){
                           objPropiedadActualizada.setAplicada(true);
                           int i = objPropiedades.indexOf(objPropiedadInicial);
                           objPropiedades.set(i, objPropiedadActualizada);
                           System.out.println("Propiedad Inicializada: " + objComponenteGeneradorVinculador.getStrClassPath() + " - " + objPropiedadActualizada.getName());        
                       }
                    }
                }
            }        
            return objPropiedades;
        }catch(java.lang.NullPointerException ex){}
        return null;
    }   
    
    /**
     * @DefinicionMetodo
     * @param objComponente @DefinicionParametro
     * @param i @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ComponenteGeneradoSimple devolverComponenteGenerado(Componente objComponente, int i){
        try{
            ComponenteGeneradoSimple objComponenteGenerado = null;
            if(objComponente instanceof ComponenteDistribuidor){
                ComponenteDistribuidor objComponenteDistribuidor = (ComponenteDistribuidor) objComponente;
                objComponenteGenerado = objComponenteDistribuidor.getObjComponentesGenerados().get(i);
            }            
            return objComponenteGenerado;
        }catch(java.lang.NullPointerException ex){            
        }catch(java.lang.ArrayIndexOutOfBoundsException ex){            
        }
        return null;
    }
    
    /**
     * @Definicionmetodo
     * @param objComponente @DefinicionParametro
     * @param objPropiedad @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static Propiedad iniciarPropiedadTexto(Object objComponente, Propiedad objPropiedad){        
        try{
            ParametroPropiedad objParametro = objPropiedad.getObjParametrosSet().get(0);
            String strText = objParametro.getStrValue();
            objParametro.setStrValue(strText);
            ArrayList<ParametroPropiedad> objParametros = new ArrayList<ParametroPropiedad>();
            objParametros.add(objParametro);
            objPropiedad.setObjParametrosSet(objParametros);
            return objPropiedad;
        }catch(java.lang.NullPointerException ex){}
        return null;
    }  
    
    /**
     * 
     * @param objComponente
     * @param strPropiedad
     * @param objTipoDato
     * @return
     */
    public static Propiedad actualizarPropiedadString(Componente objComponente, String strPropiedad, ObjetoTipoDatoReflexion objTipoDato){        
        try{
            Propiedad objPropiedad = GeneradorComponentes.getObjPropiedad(objComponente, strPropiedad);
            ParametroPropiedad objParametro = objPropiedad.getObjParametrosSet().get(0);
            String strParametro = objParametro.getStrValue();
            if(strPropiedad.equals("Name")){
                if(objComponente instanceof ComponenteDistribuidorGeneradorClaseCompleja){
                    ComponenteDistribuidorGeneradorClaseCompleja objComponenteGenerador = (ComponenteDistribuidorGeneradorClaseCompleja) objComponente;
                    int id = objComponenteGenerador.getIdClaseComponenteGeneradorClaseCompleja();
                    String strText = objTipoDato.getStrNombre(ObjetoTipoDatoReflexion.NAME_COMPONENTE) + id;
                    if(strParametro.contains(strText)){
                        return objPropiedad;
                    }
                    strText = strParametro.replaceFirst(String.valueOf(id), strText);
                    objParametro.setStrValue(strText);
                    ArrayList<ParametroPropiedad> objParametros = new ArrayList<ParametroPropiedad>();
                    objParametros.add(objParametro);
                    objPropiedad.setObjParametrosSet(objParametros);
                    return objPropiedad;
                }
                else if(objComponente instanceof ComponenteDistribuidorGeneradorUnitario){
                    ComponenteDistribuidorGeneradorUnitario objComponenteGenerador = (ComponenteDistribuidorGeneradorUnitario) objComponente;
                    int id = objComponenteGenerador.getIdClaseComponenteGeneradorUnitario();

                    String strText = "";

                    if(objComponenteGenerador.getObjTipoDato().getObjCaso().isArray()){                    
                        String strNewText = "";
                        StringTokenizer objToken = new StringTokenizer(strParametro, "[]");
                        while(objToken.hasMoreTokens())strNewText += objToken.nextToken();                
                        strText = objTipoDato.getObjTipoIncluido().getStrNombre(ObjetoTipoDatoReflexion.NAME_COMPONENTE) + id;
                        if(strParametro.contains(strText)){
                            return objPropiedad;
                        }                
                        strText = strNewText.replaceFirst(objTipoDato.getObjTipoIncluido().getObjClass().getSimpleName() + String.valueOf(id), "Array" + strText);
                        objParametro.setStrValue(strText);
                        ArrayList<ParametroPropiedad> objParametros = new ArrayList<ParametroPropiedad>();
                        objParametros.add(objParametro);
                        objPropiedad.setObjParametrosSet(objParametros);
                        return objPropiedad;
                    }
                    else{
                        strText = objTipoDato.getStrNombre(ObjetoTipoDatoReflexion.NAME_COMPONENTE) + id;
                        if(strParametro.contains(strText)){
                            return objPropiedad;
                        }                
                        strText = strParametro.replaceFirst(objTipoDato.getObjClass().getSimpleName() + String.valueOf(id), strText);
                        objParametro.setStrValue(strText);
                        ArrayList<ParametroPropiedad> objParametros = new ArrayList<ParametroPropiedad>();
                        objParametros.add(objParametro);
                        objPropiedad.setObjParametrosSet(objParametros);
                        return objPropiedad;
                    }           
                }
                else if(objComponente instanceof ComponenteDistribuidorGeneradorEnum){
                    ComponenteDistribuidorGeneradorEnum objComponenteGenerador = (ComponenteDistribuidorGeneradorEnum) objComponente;
                    int id = objComponenteGenerador.getIdClaseComponenteGeneradorEnum();
                    String strText = objTipoDato.getStrNombre(ObjetoTipoDatoReflexion.NAME_COMPONENTE) + id;
                    if(strParametro.contains(strText)){
                        return objPropiedad;
                    }
                    strText = strParametro.replaceFirst(String.valueOf(id), strText);
                    objParametro.setStrValue(strText);
                    ArrayList<ParametroPropiedad> objParametros = new ArrayList<ParametroPropiedad>();
                    objParametros.add(objParametro);
                    objPropiedad.setObjParametrosSet(objParametros);
                    return objPropiedad;
                }            
                else if(objComponente instanceof ComponenteDistribuidorGeneradorVinculador){
                    ComponenteDistribuidorGeneradorVinculador objComponenteGenerador = (ComponenteDistribuidorGeneradorVinculador) objComponente;
                    int id = objComponenteGenerador.getIdClaseComponenteGeneradorVinculador();
                    String strText = objTipoDato.getStrNombre(ObjetoTipoDatoReflexion.NAME_COMPONENTE) + id;
                    if(strParametro.contains(strText)){
                        return objPropiedad;
                    }
                    strText = strParametro.replaceFirst(String.valueOf(id), strText);
                    objParametro.setStrValue(strText);
                    ArrayList<ParametroPropiedad> objParametros = new ArrayList<ParametroPropiedad>();
                    objParametros.add(objParametro);
                    objPropiedad.setObjParametrosSet(objParametros);
                    return objPropiedad;
                }
            }
            return objPropiedad;
        }catch(java.lang.NullPointerException ex){}
        return null;
    }
    
    
    
    /**
     * @DefinicionMetodo
     * @param objComponente @DefinicionParametro
     * @param objPropiedad @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static Propiedad iniciarPropiedadNombre(Componente objComponente, Propiedad objPropiedad){        
        if(objComponente instanceof ComponenteDistribuidorContenedorEspejo){
            try {
                ComponenteDistribuidorContenedorEspejo objComponenteContenedorAsistenteEspejo = (ComponenteDistribuidorContenedorEspejo) objComponente;
                int id = objComponenteContenedorAsistenteEspejo.getIdClaseComponenteContenedorAsistenteEspejo();
                Class<?> objClassSwing = Class.forName(objComponenteContenedorAsistenteEspejo.getStrClassPath());
                String strName = objClassSwing.getSimpleName() + Utileria.leerRecursoTexto("Utileria.componente.contenedor.asistente.espejo") + String.valueOf(id);
                ParametroPropiedad objParametro = objPropiedad.getObjParametrosSet().get(0);
                objParametro.setStrValue(strName);
                ArrayList<ParametroPropiedad> objParametros = new ArrayList<ParametroPropiedad>();
                objParametros.add(objParametro);
                objPropiedad.setObjParametrosSet(objParametros);
                return objPropiedad;
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(GeneradorComponentes.class.getName()).log(Level.SEVERE, null, ex);
            }
        }   
        else if(objComponente instanceof ComponenteDistribuidorContenedorLibre){
            try {
                ComponenteDistribuidorContenedorLibre objComponenteContenedorAsistenteLibre = (ComponenteDistribuidorContenedorLibre) objComponente;
                int id = objComponenteContenedorAsistenteLibre.getIdClaseComponenteContenedorAsistenteLibre();
                Class<?> objClassSwing = Class.forName(objComponenteContenedorAsistenteLibre.getStrClassPath());
                String strName = objClassSwing.getSimpleName() + Utileria.leerRecursoTexto("Utileria.componente.contenedor.asistente.libre") + String.valueOf(id);
                ParametroPropiedad objParametro = objPropiedad.getObjParametrosSet().get(0);
                objParametro.setStrValue(strName);
                ArrayList<ParametroPropiedad> objParametros = new ArrayList<ParametroPropiedad>();
                objParametros.add(objParametro);
                objPropiedad.setObjParametrosSet(objParametros);
                return objPropiedad;
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(GeneradorComponentes.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        else if(objComponente instanceof ComponenteDistribuidorIntegradorMetodo){
            try {
                ComponenteDistribuidorIntegradorMetodo objComponenteIntegrador = (ComponenteDistribuidorIntegradorMetodo) objComponente;
                int id = objComponenteIntegrador.getIdClaseComponenteIntegradorMetodo();
                Class<?> objClassSwing = Class.forName(objComponenteIntegrador.getStrClassPath());
                String strNombrePropiedadClaseAnalizada = objComponenteIntegrador.getObjReflexion().getStrNombre();
                strNombrePropiedadClaseAnalizada = 
                        strNombrePropiedadClaseAnalizada.replaceFirst(String.valueOf(strNombrePropiedadClaseAnalizada.charAt(0)), String.valueOf(Character.toUpperCase(strNombrePropiedadClaseAnalizada.charAt(0))));
                String strName = objClassSwing.getSimpleName() + Utileria.leerRecursoTexto("Utileria.componente.integrador.metodo") + strNombrePropiedadClaseAnalizada + String.valueOf(id);
                ParametroPropiedad objParametro = objPropiedad.getObjParametrosSet().get(0);
                objParametro.setStrValue(strName);
                ArrayList<ParametroPropiedad> objParametros = new ArrayList<ParametroPropiedad>();
                objParametros.add(objParametro);
                objPropiedad.setObjParametrosSet(objParametros);
                return objPropiedad;
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(GeneradorComponentes.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        else if(objComponente instanceof ComponenteDistribuidorIntegradorSimple){
            try {
                ComponenteDistribuidorIntegradorSimple objComponenteIntegrador = (ComponenteDistribuidorIntegradorSimple) objComponente;
                int id = objComponenteIntegrador.getIdClaseComponenteIntegradorSimple();
                Class<?> objClassSwing = Class.forName(objComponenteIntegrador.getStrClassPath());
                String strName = objClassSwing.getSimpleName() + Utileria.leerRecursoTexto("Utileria.componente.integrador.simple") + String.valueOf(id);
                ParametroPropiedad objParametro = objPropiedad.getObjParametrosSet().get(0);
                objParametro.setStrValue(strName);
                ArrayList<ParametroPropiedad> objParametros = new ArrayList<ParametroPropiedad>();
                objParametros.add(objParametro);
                objPropiedad.setObjParametrosSet(objParametros);
                return objPropiedad;
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(GeneradorComponentes.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        else if(objComponente instanceof ComponenteDistribuidorIntegradorExtra){
            try {
                ComponenteDistribuidorIntegradorExtra objComponenteIntegrador = (ComponenteDistribuidorIntegradorExtra) objComponente;
                int id = objComponenteIntegrador.getIdClaseComponenteIntegradorExtra();
                Class<?> objClassSwing = Class.forName(objComponenteIntegrador.getStrClassPath());                
                String strName = objClassSwing.getSimpleName() + Utileria.leerRecursoTexto("Utileria.componente.integrador.extra") + String.valueOf(id);
                ParametroPropiedad objParametro = objPropiedad.getObjParametrosSet().get(0);
                objParametro.setStrValue(strName);
                ArrayList<ParametroPropiedad> objParametros = new ArrayList<ParametroPropiedad>();
                objParametros.add(objParametro);
                objPropiedad.setObjParametrosSet(objParametros);
                return objPropiedad;
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(GeneradorComponentes.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        else if(objComponente instanceof ComponenteDistribuidorGeneradorClaseCompleja){
            try {
                ComponenteDistribuidorGeneradorClaseCompleja objComponenteGenerador = (ComponenteDistribuidorGeneradorClaseCompleja) objComponente;
                int id = objComponenteGenerador.getIdClaseComponenteGeneradorClaseCompleja();
                Class<?> objClassSwing = Class.forName(objComponenteGenerador.getStrClassPath());
                String strClassPathTipo = objComponenteGenerador.getStrSimpleClassPathTipoDato();
                //String strName = objClassSwing.getSimpleName() + Utileria.leerRecursoTexto("Utileria.componente.generador.clase") + strClassPathTipo + String.valueOf(id);
                String strAliasPatron = Utileria.leerRecursoTexto("Utileria.alias.representacion.patron.cdgcc");
                String strName = strAliasPatron + strClassPathTipo + String.valueOf(id);                
                ParametroPropiedad objParametro = objPropiedad.getObjParametrosSet().get(0);
                objParametro.setStrValue(strName);
                ArrayList<ParametroPropiedad> objParametros = new ArrayList<ParametroPropiedad>();
                objParametros.add(objParametro);
                objPropiedad.setObjParametrosSet(objParametros);
                return objPropiedad;
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(GeneradorComponentes.class.getName()).log(Level.SEVERE, null, ex);
            }
        } 
        else if(objComponente instanceof ComponenteDistribuidorGeneradorMetodo){
            try {
                ComponenteDistribuidorGeneradorMetodo objComponenteGenerador = (ComponenteDistribuidorGeneradorMetodo) objComponente;
                int id = objComponenteGenerador.getIdClaseComponenteGeneradorMetodo();
                Class<?> objClassSwing = Class.forName(objComponenteGenerador.getStrClassPath());
                String strClassPathTipo = objComponenteGenerador.getStrSimpleClassPathTipoDato();
                //String strName = objClassSwing.getSimpleName() + Utileria.leerRecursoTexto("Utileria.componente.generador.metodo") + strClassPathTipo + String.valueOf(id);
                String strAliasPatron = Utileria.leerRecursoTexto("Utileria.alias.representacion.patron.cdgm");
                String strName = strAliasPatron + strClassPathTipo + String.valueOf(id);                
                ParametroPropiedad objParametro = objPropiedad.getObjParametrosSet().get(0);
                objParametro.setStrValue(strName);
                ArrayList<ParametroPropiedad> objParametros = new ArrayList<ParametroPropiedad>();
                objParametros.add(objParametro);
                objPropiedad.setObjParametrosSet(objParametros);
                return objPropiedad;
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(GeneradorComponentes.class.getName()).log(Level.SEVERE, null, ex);
            }
        }        
        else if(objComponente instanceof ComponenteDistribuidorGeneradorEnum){
            try {
                ComponenteDistribuidorGeneradorEnum objComponenteGenerador = (ComponenteDistribuidorGeneradorEnum) objComponente;
                int id = objComponenteGenerador.getIdClaseComponenteGeneradorEnum();
                Class<?> objClassSwing = Class.forName(objComponenteGenerador.getStrClassPath());
                String strClassPathTipo = objComponenteGenerador.getStrSimpleClassPathTipoDato();
                //String strName = objClassSwing.getSimpleName() + Utileria.leerRecursoTexto("Utileria.alias.representacion.patron.cdge") + strClassPathTipo + String.valueOf(id);
                String strAliasPatron = Utileria.leerRecursoTexto("Utileria.alias.representacion.patron.cdge");
                String strName = strAliasPatron + strClassPathTipo + String.valueOf(id);
                ParametroPropiedad objParametro = objPropiedad.getObjParametrosSet().get(0);
                objParametro.setStrValue(strName);
                ArrayList<ParametroPropiedad> objParametros = new ArrayList<ParametroPropiedad>();
                objParametros.add(objParametro);
                objPropiedad.setObjParametrosSet(objParametros);
                return objPropiedad;
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(GeneradorComponentes.class.getName()).log(Level.SEVERE, null, ex);
            }
        } 
        else if(objComponente instanceof ComponenteDistribuidorGeneradorVinculador){
            try {
                ComponenteDistribuidorGeneradorVinculador objComponenteGenerador = (ComponenteDistribuidorGeneradorVinculador) objComponente;
                int id = objComponenteGenerador.getIdClaseComponenteGeneradorVinculador();
                Class<?> objClassSwing = Class.forName(objComponenteGenerador.getStrClassPath());
                String strClassPathTipo = objComponenteGenerador.getStrSimpleClassPathTipoDato();
                //String strName = objClassSwing.getSimpleName() + Utileria.leerRecursoTexto("Utileria.alias.representacion.patron.cdgv") + strClassPathTipo + String.valueOf(id);
                String strAliasPatron = Utileria.leerRecursoTexto("Utileria.alias.representacion.patron.cdgv");
                String strName = strAliasPatron + strClassPathTipo + String.valueOf(id);
                ParametroPropiedad objParametro = objPropiedad.getObjParametrosSet().get(0);
                objParametro.setStrValue(strName);
                ArrayList<ParametroPropiedad> objParametros = new ArrayList<ParametroPropiedad>();
                objParametros.add(objParametro);
                objPropiedad.setObjParametrosSet(objParametros);
                return objPropiedad;
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(GeneradorComponentes.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        else if(objComponente instanceof ComponenteDistribuidorGeneradorUnitario){
            try {
                ComponenteDistribuidorGeneradorUnitario objComponenteGenerador = (ComponenteDistribuidorGeneradorUnitario) objComponente;
                int id = objComponenteGenerador.getIdClaseComponenteGeneradorUnitario();
                Class<?> objClassSwing = Class.forName(objComponenteGenerador.getStrClassPath());
                String strClassPathTipo = objComponenteGenerador.getStrSimpleClassPathTipoDato();
                //String strName = objClassSwing.getSimpleName() + Utileria.leerRecursoTexto("Utileria.componente.generador.unitario") + strClassPathTipo + String.valueOf(id);
                String strAliasPatron = Utileria.leerRecursoTexto("Utileria.alias.representacion.patron.cdgu");
                String strName = strAliasPatron + strClassPathTipo + String.valueOf(id);
                ParametroPropiedad objParametro = objPropiedad.getObjParametrosSet().get(0);
                objParametro.setStrValue(strName);
                ArrayList<ParametroPropiedad> objParametros = new ArrayList<ParametroPropiedad>();
                objParametros.add(objParametro);
                objPropiedad.setObjParametrosSet(objParametros);
                return objPropiedad;
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(GeneradorComponentes.class.getName()).log(Level.SEVERE, null, ex);
            }
        } 
        else if(objComponente instanceof ComponenteDistribuidorGeneradorString){
            try {
                ComponenteDistribuidorGeneradorString objComponenteGenerador = (ComponenteDistribuidorGeneradorString) objComponente;
                int id = objComponenteGenerador.getIdClaseComponenteGeneradorString();
                Class<?> objClassSwing = Class.forName(objComponenteGenerador.getStrClassPath());
                String strClassPathTipo = objComponenteGenerador.getStrSimpleClassPathTipoDato();
                //String strName = objClassSwing.getSimpleName() + Utileria.leerRecursoTexto("Utileria.componente.generador.unitario") + strClassPathTipo + String.valueOf(id);
                String strAliasPatron = Utileria.leerRecursoTexto("Utileria.alias.representacion.patron.cdgs");
                String strName = strAliasPatron + strClassPathTipo + String.valueOf(id);
                ParametroPropiedad objParametro = objPropiedad.getObjParametrosSet().get(0);
                objParametro.setStrValue(strName);
                ArrayList<ParametroPropiedad> objParametros = new ArrayList<ParametroPropiedad>();
                objParametros.add(objParametro);
                objPropiedad.setObjParametrosSet(objParametros);
                return objPropiedad;
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(GeneradorComponentes.class.getName()).log(Level.SEVERE, null, ex);
            }
        }         
        else if(objComponente instanceof ComponenteDistribuidorExtra){
            try {
                ComponenteDistribuidorExtra objComponenteExtra = (ComponenteDistribuidorExtra) objComponente;
                int id = objComponenteExtra.getIdClaseComponenteExtra();
                Class<?> objClassSwing = Class.forName(objComponenteExtra.getStrClassPath());
                String strName = objClassSwing.getSimpleName() + Utileria.leerRecursoTexto("Utileria.componente.extra") + String.valueOf(id);
                ParametroPropiedad objParametro = objPropiedad.getObjParametrosSet().get(0);
                objParametro.setStrValue(strName);
                ArrayList<ParametroPropiedad> objParametros = new ArrayList<ParametroPropiedad>();
                objParametros.add(objParametro);
                objPropiedad.setObjParametrosSet(objParametros);
                return objPropiedad;
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(GeneradorComponentes.class.getName()).log(Level.SEVERE, null, ex);
            }                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
        }
        else if(objComponente instanceof ComponenteGeneradoInterno){
            try {
                ComponenteGeneradoInterno objComponenteGeneradoInterno = (ComponenteGeneradoInterno) objComponente;
                int id = objComponenteGeneradoInterno.getIdClaseComponenteGeneradoInterno();
                Class<?> objClassSwing = Class.forName(objComponenteGeneradoInterno.getStrClassPath());
                String strName = objClassSwing.getSimpleName() + Utileria.leerRecursoTexto("Utileria.componente.generado.interno") + String.valueOf(id);
                ParametroPropiedad objParametro = objPropiedad.getObjParametrosSet().get(0);
                objParametro.setStrValue(strName);
                ArrayList<ParametroPropiedad> objParametros = new ArrayList<ParametroPropiedad>();
                objParametros.add(objParametro);
                objPropiedad.setObjParametrosSet(objParametros);
                return objPropiedad;
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(GeneradorComponentes.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        else if(objComponente instanceof ComponenteGeneradoSimple){
            try {
                ComponenteGeneradoSimple objComponenteGenerado = (ComponenteGeneradoSimple) objComponente;
                int id = objComponenteGenerado.getIdClaseComponenteGeneradoSimple();
                Class<?> objClassSwing = Class.forName(objComponenteGenerado.getStrClassPath());
                String strName = objClassSwing.getSimpleName() + Utileria.leerRecursoTexto("Utileria.componente.generado") + String.valueOf(id);
                ParametroPropiedad objParametro = objPropiedad.getObjParametrosSet().get(0);
                objParametro.setStrValue(strName);
                ArrayList<ParametroPropiedad> objParametros = new ArrayList<ParametroPropiedad>();
                objParametros.add(objParametro);
                objPropiedad.setObjParametrosSet(objParametros);
                return objPropiedad;
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(GeneradorComponentes.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        else if(objComponente instanceof ComponenteDistribuidorModeloAsociado){
            try {
                ComponenteDistribuidorModeloAsociado objComponenteDistribuidorModeloAsociado = (ComponenteDistribuidorModeloAsociado) objComponente;
                int id = objComponenteDistribuidorModeloAsociado.getIdClaseComponenteDistribuidorModeloAsociado();
                Class<?> objClassSwing = Class.forName(objComponenteDistribuidorModeloAsociado.getStrClassPath());
                String strName = objClassSwing.getSimpleName() + Utileria.leerRecursoTexto("Utileria.componente.modelo.asociado") + String.valueOf(id);
                ParametroPropiedad objParametro = objPropiedad.getObjParametrosSet().get(0);
                objParametro.setStrValue(strName);
                ArrayList<ParametroPropiedad> objParametros = new ArrayList<ParametroPropiedad>();
                objParametros.add(objParametro);
                objPropiedad.setObjParametrosSet(objParametros);
                return objPropiedad;
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(GeneradorComponentes.class.getName()).log(Level.SEVERE, null, ex);
            }                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
        }
        return null;
    }
    
    /**
     * @DefinicionMetodo
     * @param objComponente @DefinicionParametro
     * @param objPropiedad @DefinicionParametro
     * @param objMetodo @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static Propiedad iniciarPropiedadNombre(ComponenteDistribuidorGeneradorMetodo objComponente, Propiedad objPropiedad, Method objMetodo){        
       if(objComponente != null){
        try {            
            int id = objComponente.getIdClaseComponenteGeneradorMetodo();
            if(objComponente instanceof ComponenteDistribuidorGeneradorMetodoGetter){
                ComponenteDistribuidorGeneradorMetodoGetter objComponenteDistribuidorGeneradorMetodoGetter =
                       (ComponenteDistribuidorGeneradorMetodoGetter) objComponente; 
                id = objComponenteDistribuidorGeneradorMetodoGetter.getIdClaseComponenteGeneradorMetodoGetter();
            }
            else if(objComponente instanceof ComponenteDistribuidorGeneradorMetodoSetter){
                ComponenteDistribuidorGeneradorMetodoSetter objComponenteDistribuidorGeneradorMetodoSetter =
                       (ComponenteDistribuidorGeneradorMetodoSetter) objComponente; 
                id = objComponenteDistribuidorGeneradorMetodoSetter.getIdClaseComponenteGeneradorMetodoSetter();
            }
            Class<?> objClassSwing = Class.forName(objComponente.getStrClassPath());
            String strClassPathTipo = objComponente.getStrSimpleClassPathTipoDato();
            String strMetodo = Utileria.formatStringComponente(objMetodo, objMetodo.getName());
            //String strName = objClassSwing.getSimpleName() + strMetodo + strClassPathTipo + String.valueOf(id);            
            String strAliasPatron = Utileria.leerRecursoTexto("Utileria.alias.representacion.patron.cdgm");
            String strName = strAliasPatron + strMetodo + String.valueOf(id);
            //strClassPathTipo
            ParametroPropiedad objParametro = objPropiedad.getObjParametrosSet().get(0);
            objParametro.setStrValue(strName);
            ArrayList<ParametroPropiedad> objParametros = new ArrayList<ParametroPropiedad>();
            objParametros.add(objParametro);
            objPropiedad.setObjParametrosSet(objParametros);
            return objPropiedad;
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(GeneradorComponentes.class.getName()).log(Level.SEVERE, null, ex);
        } 
        return null;
    }else{
            UtilRender.printlnConsole("Objeto Componente Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
       return null;
    }

    /**
     * @Definicionmetodo
     * @param objClass @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ObjetoTipoDatoReflexion devolverTipoDatoReflexionPorClass(Class<?> objClass){
        if(objClass != null){
            for(ObjetoTipoDatoReflexion obTipoDato : UtilRepresentacion.objTypesData){
                if(obTipoDato.getStrClassPath().equals(objClass.getCanonicalName())){
                    return obTipoDato;
                }            
            }
        }else{
            UtilRender.printlnConsole("Objeto Class  Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
        return null;
    }    
    
    /**
     * @DefinicionMetodo
     * @param objParent @param objTipoDatoModeloAnalizado 
     * @param objTipoDatoModeloAnalizado 
     * @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static boolean ejecutarGeneradorSilencioso(Object objParent, ObjetoTipoDatoReflexion objTipoDatoModeloAnalizado){                
      if(objTipoDatoModeloAnalizado != null){      
            ComponenteDistribuidorGenerador objTempComponenteGenerador = 
                    generarRepresentacionPorTipoDato(objTipoDatoModeloAnalizado, true, true);

            if(objTempComponenteGenerador != null){
                Bandera objBandera = new Bandera();
                objBandera.addObserver((Observer) objParent);
                objBandera.setEstado(Bandera.GENERADOR_SILENCIOSO_OK);                
                objBandera.setFlag(true);
                objBandera.setObj(objTempComponenteGenerador);
                objBandera.notificar();                                            
                return true;
            }            

            return false;
       }else{
            UtilRender.printlnConsole("Objeto Tipo Dato MOdelo Analizado Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
      return false;
    }
    
    /**
     * Este método utiliza el patrón de represetnaciones para devolver un Componente
     * Generador.
     * @param objTipoDatoModeloAnalizado Tipo de Dato por el cual se generará la Representación.
     * @param intoBiblioteca Indica si la representación puede ser generada por medio de una
     * existente en las bibliotecas.
     * @return Componente Generador que representa el Tipo de Dato.
     */
    public static ComponenteDistribuidorGenerador generarRepresentacionPorTipoDato(ObjetoTipoDatoReflexion objTipoDatoModeloAnalizado, boolean intoBiblioteca, boolean origen){        
        if(objTipoDatoModeloAnalizado != null){
            ComponenteBase objComponenteBase = GeneradorComponentes.devolverComponenteBasePorTipoDato(objTipoDatoModeloAnalizado);        
            //Nuevo: aqui se incluye la generación desde la biblioteca en caso de estar activada
            if(objComponenteBase == null){
                if(intoBiblioteca){//inclusión desde bibliotecas disponibles activado
                    ComponenteDistribuidorGenerador objComponenteGenerador = devolverRepresentacionTipoDatoDesdeBibliotecas(objTipoDatoModeloAnalizado);
                    if(objTipoDatoModeloAnalizado.esColeccion()){//Collections
                        if(devolverTipoColeccionModeloAsociado(objTipoDatoModeloAnalizado.getObjClass()) == TipoColeccionModeloAsociado.eAbstractList){

                        }
                    }                
                    return objComponenteGenerador;
                }                    
            }
            return GeneradorComponentes.generarRepresentacionPorComponenteBase(objComponenteBase, objTipoDatoModeloAnalizado, intoBiblioteca, origen);
        }else{
            UtilRender.printlnConsole("Objeto Tipo Dato MOdelo Analizado Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
        return null;
    }
    
    /**
     * Devuelve la Representación para un <code>ObjetoTipoDatoReflexion</code>
     * @param objComponenteBase 
     * @param objTipoDatoModeloAnalizado Tipo de Dato del Modelo Analizado.
     * @param intoBiblioteca 
     * @return Componente Generador Genérico.
     */
    public static ComponenteDistribuidorGenerador generarRepresentacionPorComponenteBase(ComponenteBase objComponenteBase, ObjetoTipoDatoReflexion objTipoDatoModeloAnalizado, boolean intoBiblioteca, boolean origen){                
        if(intoBiblioteca){//inclusión desde bibliotecas disponibles activado
            ComponenteDistribuidorGenerador objComponenteGenerador = devolverRepresentacionTipoDatoDesdeBibliotecas(objTipoDatoModeloAnalizado);
            if(objComponenteGenerador != null){
                return objComponenteGenerador;
            }
        }
        try{
            if(objTipoDatoModeloAnalizado.getObjCaso().geteCaso() == TipoCaso.eClaseMundo){                
                if(!origen){//Salida
                    return generarRepresentacionStringPorComponenteBase(objTipoDatoModeloAnalizado, intoBiblioteca);
                }
                else{
                    return generarRepresentacionVinculadorPorComponenteBase(objTipoDatoModeloAnalizado, intoBiblioteca);
                }
            }
            else if(objTipoDatoModeloAnalizado.getObjCaso().geteCaso() == TipoCaso.eEnumeracion){                            
                if(objComponenteBase instanceof ComponenteBaseStandar){
                    ComponenteBaseStandar objComponenteBaseStandar = (ComponenteBaseStandar) objComponenteBase;                                
                    return crearComponenteGeneradorEnumPorComponenteBaseStandard(objComponenteBaseStandar, objTipoDatoModeloAnalizado);
                }
                else if(objComponenteBase instanceof ComponenteBasePersonalizado){
                    ComponenteBasePersonalizado objComponenteBasePersonalizado = (ComponenteBasePersonalizado) objComponenteBase;
                    return crearComponenteGeneradorEnumPorComponenteBasePersonalizado(objComponenteBasePersonalizado, objTipoDatoModeloAnalizado);
                }           
            }        
            else{
                if(objComponenteBase instanceof ComponenteBaseStandar){
                    ComponenteBaseStandar objComponenteBaseStandar = (ComponenteBaseStandar) objComponenteBase;
                    ComponenteDistribuidorGeneradorUnitario objComponenteGeneradorUnitario = crearComponenteGeneradorUnitarioPorComponenteBaseStandard(objComponenteBaseStandar, objTipoDatoModeloAnalizado);                
                    ModeloAsociado objModeloAsociado = generarModeloAsociadoPorPatron(objTipoDatoModeloAnalizado, objComponenteGeneradorUnitario);
                    if(objModeloAsociado != null){
                        objModeloAsociado.setObjComponenteParent(objComponenteGeneradorUnitario);
                        objComponenteGeneradorUnitario.setObjModeloAsociado(objModeloAsociado);                        
                        GeneradorComponentes.actualizarPropiedadString(objComponenteGeneradorUnitario, "Name", objTipoDatoModeloAnalizado);                    
                    }                    
                    return objComponenteGeneradorUnitario;                
                }
                else if(objComponenteBase instanceof ComponenteBasePersonalizado){
                    ComponenteBasePersonalizado objComponenteBasePersonalizado = (ComponenteBasePersonalizado) objComponenteBase;
                    ComponenteDistribuidorGeneradorUnitario objComponenteGeneradorUnitario = crearComponenteGeneradorUnitarioPorComponenteBasePersonalizado(objComponenteBasePersonalizado, objTipoDatoModeloAnalizado);
                    ModeloAsociado objModeloAsociado = generarModeloAsociadoPorPatron(objTipoDatoModeloAnalizado, objComponenteGeneradorUnitario);
                    if(objModeloAsociado != null){
                        objModeloAsociado.setObjComponenteParent(objComponenteGeneradorUnitario);
                        objComponenteGeneradorUnitario.setObjModeloAsociado(objModeloAsociado);
                        GeneradorComponentes.actualizarPropiedadString(objComponenteGeneradorUnitario, "Name", objTipoDatoModeloAnalizado);                    
                    }                    
                    return objComponenteGeneradorUnitario;                
                }
            }
        }catch(java.lang.Exception ex){}
        return null;
    }

//    /**
//     * 
//     * @param objTipoDatoModeloAnalizado
//     * @param intoBiblioteca
//     * @return
//     */
//    public static ComponenteDistribuidorGenerador generarRepresentacionSimplePorComponenteBase(ObjetoTipoDatoReflexion objTipoDatoModeloAnalizado, boolean intoBiblioteca) {
//        ArrayList<ObjetoReflexion> objIncluidos = new ArrayList<ObjetoReflexion>();                
//        Method objMetodoToString = UtilRepresentacion.devolverToStringClass(objTipoDatoModeloAnalizado.getObjClass());
//        ObjetoReflexion objToString = UtilRepresentacion.crearObjetoReflexion(objMetodoToString);
//        objIncluidos.addSourceCode(objToString);
//        return construirComponenteGeneradorSimple(objTipoDatoModeloAnalizado, objIncluidos, intoBiblioteca);
//    }
    
    /**
     * 
     * @param objTipoDatoModeloAnalizado
     * @param intoBiblioteca
     * @return
     */
    public static ComponenteDistribuidorGenerador generarRepresentacionStringPorComponenteBase(ObjetoTipoDatoReflexion objTipoDatoModeloAnalizado, boolean intoBiblioteca) {
        if(objTipoDatoModeloAnalizado != null){
            ArrayList<ObjetoReflexion> objIncluidos = new ArrayList<ObjetoReflexion>();                
            Method objMetodoToString = UtilRepresentacion.devolverToStringClass(objTipoDatoModeloAnalizado.getObjClass());
            ObjetoReflexion objToString = UtilRepresentacion.crearObjetoReflexion(objMetodoToString);
            objIncluidos.add(objToString);
            return construirComponenteGeneradorString(objTipoDatoModeloAnalizado, objIncluidos, intoBiblioteca);
        }else{
            UtilRender.printlnConsole("Objeto Tipo Dato Modelo Analizado Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
        return null;
    }
    
    /**
     * 
     * @param objTipoDatoModeloAnalizado
     * @param intoBiblioteca
     * @return
     */
    public static ComponenteDistribuidorGenerador generarRepresentacionVinculadorPorComponenteBase(ObjetoTipoDatoReflexion objTipoDatoModeloAnalizado, boolean intoBiblioteca) {        
        return construirComponenteGeneradorVinculador(objTipoDatoModeloAnalizado, intoBiblioteca);
    }
    
    /**
     * 
     * @param objTipoDatoModeloAnalizado
     * @param objComponenteGeneradorUnitario
     * @return
     */
    public static ModeloAsociado generarModeloAsociadoPorPatron(ObjetoTipoDatoReflexion objTipoDatoModeloAnalizado, ComponenteDistribuidorGeneradorUnitario objComponenteGeneradorUnitario){
        if(objTipoDatoModeloAnalizado != null){
            if(objTipoDatoModeloAnalizado.getObjCaso().isCollection()){  
                TipoColeccionModeloAsociado objTipoColeccionModeloAsociado = GeneradorComponentes.devolverTipoColeccionModeloAsociado(objTipoDatoModeloAnalizado.getObjClass());
                if(objTipoDatoModeloAnalizado.getObjTiposGenericos().size() == 1){
                    ObjetoTipoDatoReflexion objTipoDatoGenerico = objTipoDatoModeloAnalizado.getObjTiposGenericos().get(0);
                    if(UtilRepresentacion.objBibliotecaTrabajoLocal.existeRepresentacionTipoDato(objTipoDatoGenerico)){
                        ComponenteDistribuidorGenerador objComponenteGeneradorGenericoObject = devolverComponenteGenericoPorTipoDato(objTipoDatoGenerico);
                        ModeloAsociado objModeloAsociado = GeneradorComponentes.crearModeloAsociado(objTipoColeccionModeloAsociado, objComponenteGeneradorUnitario, objComponenteGeneradorGenericoObject, ModeloAsociado.MODO_COLLECTION);
                        return objModeloAsociado;
                    }                
                }            
                else if(objTipoDatoModeloAnalizado.getObjTiposGenericos().size() == 2){
                    ObjetoTipoDatoReflexion objTipoDatoGenericoKey = objTipoDatoModeloAnalizado.getObjTiposGenericos().get(0);
                    ObjetoTipoDatoReflexion objTipoDatoGenericoObject = objTipoDatoModeloAnalizado.getObjTiposGenericos().get(1);
                    ComponenteDistribuidorGenerador objComponenteGeneradorGenericoKey = null;
                    ComponenteDistribuidorGenerador objComponenteGeneradorGenericoObject = null;                        
                    if(UtilRepresentacion.objBibliotecaTrabajoLocal.existeRepresentacionTipoDato(objTipoDatoGenericoKey)){
                        objComponenteGeneradorGenericoKey = devolverComponenteGenericoPorTipoDato(objTipoDatoGenericoKey);
                    }                
                    if(UtilRepresentacion.objBibliotecaTrabajoLocal.existeRepresentacionTipoDato(objTipoDatoGenericoKey)){
                        objComponenteGeneradorGenericoObject = devolverComponenteGenericoPorTipoDato(objTipoDatoGenericoObject);
                    }
                    if(objComponenteGeneradorGenericoKey != null && objComponenteGeneradorGenericoObject != null){
                        ModeloAsociado objModeloAsociado = GeneradorComponentes.crearModeloAsociado(objTipoColeccionModeloAsociado, objComponenteGeneradorUnitario, objComponenteGeneradorGenericoKey, objComponenteGeneradorGenericoObject, ModeloAsociado.MODO_COLLECTION);
                        return objModeloAsociado;
                    }
                } 
            }
            else if(objTipoDatoModeloAnalizado.getObjCaso().isArray()){
                ComponenteDistribuidorGenerador objComponenteGeneradorIncluido = GeneradorComponentes.devolverComponenteIncluidoEnArrayPorTipoDato(objTipoDatoModeloAnalizado);            
                TipoColeccionModeloAsociado objTipoColeccionModeloAsociado = GeneradorComponentes.devolverTipoColeccionModeloAsociado(objComponenteGeneradorIncluido.getObjClassSwing());
                ModeloAsociado objModeloAsociado = GeneradorComponentes.crearModeloAsociado(objTipoColeccionModeloAsociado, objComponenteGeneradorUnitario, objComponenteGeneradorIncluido, ModeloAsociado.MODO_ARRAY);
                return objModeloAsociado;

            }
        }else{
            UtilRender.printlnConsole("Objeto Tipo Modelo Analizado Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
        return null;
    }   
    
    private static ComponenteDistribuidorGeneradorUnitario crearComponenteGeneradorUnitarioPorComponenteBasePersonalizado(ComponenteBasePersonalizado objComponenteBasePersonalizado, ObjetoTipoDatoReflexion objTipoDatoModeloAnalizado) {
        try{
            ComponenteDistribuidorGeneradorUnitario objComponenteGenerador = 
                GeneradorComponentes.crearComponenteGeneradorUnitario(objComponenteBasePersonalizado, objTipoDatoModeloAnalizado.getStrClassPath());

            objComponenteGenerador.setStrClassPathTipoDato(objTipoDatoModeloAnalizado.getStrClassPath());
            objComponenteGenerador.setObjTipoDato(objTipoDatoModeloAnalizado);            

            if(objComponenteGenerador.getObjPlantillaComboDistribucionGrupalSeleccionada() != null){
                objComponenteGenerador.getObjDistribuidorGrupalSeleccionado().actualizarPlantillaComboSeleccionada(objComponenteGenerador.getObjPlantillaComboDistribucionGrupalSeleccionada());
                if(objComponenteGenerador.ubicarComponentesEnTablaDistribucion()){
                    objComponenteGenerador.setFinish(true);
                    return objComponenteGenerador;
                }
            }   
        }catch(java.lang.NullPointerException ex) {
            Logger.getLogger(GeneradorComponentes.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
    
    private static ComponenteDistribuidorGeneradorUnitario crearComponenteGeneradorUnitarioPorComponenteBaseStandard(ComponenteBaseStandar objComponenteBaseStandar, ObjetoTipoDatoReflexion objTipoDatoModeloAnalizado) {
        try{
            ComponenteDistribuidorGeneradorUnitario objComponenteGenerador = 
                GeneradorComponentes.crearComponenteGeneradorUnitario(objComponenteBaseStandar, objTipoDatoModeloAnalizado.getObjClass(), false, false, true);
            objComponenteGenerador.setObjTipoDato(objTipoDatoModeloAnalizado);

            if (objComponenteGenerador.getObjPlantillaComboDistribucionGrupalSeleccionada() != null) {
                objComponenteGenerador.getObjDistribuidorGrupalSeleccionado().actualizarPlantillaComboSeleccionada(objComponenteGenerador.getObjPlantillaComboDistribucionGrupalSeleccionada());
                if (objComponenteGenerador.ubicarComponentesEnTablaDistribucion()) {
                    objComponenteGenerador.setFinish(true);
                    return objComponenteGenerador;
                }
            }
        }catch(java.lang.NullPointerException ex) {
            Logger.getLogger(GeneradorComponentes.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
    
    private static ComponenteDistribuidorGeneradorString crearComponenteGeneradorStringPorComponenteBaseStandard(ComponenteBaseStandar objComponenteBaseStandar, ObjetoTipoDatoReflexion objTipoDatoModeloAnalizado) {
        try{
            ComponenteDistribuidorGeneradorString objComponenteGenerador = 
                GeneradorComponentes.crearComponenteGeneradorString(objComponenteBaseStandar, objTipoDatoModeloAnalizado.getObjClass(), false, false, true);
            objComponenteGenerador.setObjTipoDato(objTipoDatoModeloAnalizado);

            if (objComponenteGenerador.getObjPlantillaComboDistribucionGrupalSeleccionada() != null) {
                objComponenteGenerador.getObjDistribuidorGrupalSeleccionado().actualizarPlantillaComboSeleccionada(objComponenteGenerador.getObjPlantillaComboDistribucionGrupalSeleccionada());
                if (objComponenteGenerador.ubicarComponentesEnTablaDistribucion()) {
                    objComponenteGenerador.setFinish(true);
                    return objComponenteGenerador;
                }
            }
        }catch(java.lang.NullPointerException ex) {
            Logger.getLogger(GeneradorComponentes.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
    
    private static ComponenteDistribuidorGeneradorString crearComponenteGeneradorStringPorComponenteBasePersonalizado(ComponenteBasePersonalizado objComponenteBasePersonalizado, ObjetoTipoDatoReflexion objTipoDatoModeloAnalizado) {
        try{
            ComponenteDistribuidorGeneradorString objComponenteGenerador = 
                GeneradorComponentes.crearComponenteGeneradorString(objComponenteBasePersonalizado, objTipoDatoModeloAnalizado.getStrClassPath());

            objComponenteGenerador.setStrClassPathTipoDato(objTipoDatoModeloAnalizado.getStrClassPath());
            objComponenteGenerador.setObjTipoDato(objTipoDatoModeloAnalizado);            

            if(objComponenteGenerador.getObjPlantillaComboDistribucionGrupalSeleccionada() != null){
                objComponenteGenerador.getObjDistribuidorGrupalSeleccionado().actualizarPlantillaComboSeleccionada(objComponenteGenerador.getObjPlantillaComboDistribucionGrupalSeleccionada());
                if(objComponenteGenerador.ubicarComponentesEnTablaDistribucion()){
                    objComponenteGenerador.setFinish(true);
                    return objComponenteGenerador;
                }
            }   
        }catch(java.lang.NullPointerException ex) {
            Logger.getLogger(GeneradorComponentes.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }    
    
    private static ComponenteDistribuidorGeneradorEnum crearComponenteGeneradorEnumPorComponenteBaseStandard(ComponenteBaseStandar objComponenteBaseStandar, ObjetoTipoDatoReflexion objTipoDatoModeloAnalizado/*, int modo*/) {
        ComponenteDistribuidorGeneradorEnum objComponenteGenerador = 
            GeneradorComponentes.crearComponenteGeneradorEnum(objComponenteBaseStandar, objTipoDatoModeloAnalizado.getObjClass(), false, false, true);
        if(objComponenteGenerador != null){
            objComponenteGenerador.setObjTipoDato(objTipoDatoModeloAnalizado);

            try{
                ArrayList<String> objE = new ArrayList<String>();
                for(Object e :objTipoDatoModeloAnalizado.getObjClass().getEnumConstants()){
                    objE.add(e.toString());
                }                                
                objComponenteGenerador.setObjItems(objE);
            }catch(java.lang.NullPointerException ex){}

            if(objComponenteGenerador.getObjPlantillaComboDistribucionGrupalSeleccionada() != null){
                objComponenteGenerador.getObjDistribuidorGrupalSeleccionado().actualizarPlantillaComboSeleccionada(objComponenteGenerador.getObjPlantillaComboDistribucionGrupalSeleccionada());
                if(objComponenteGenerador.ubicarComponentesEnTablaDistribucion()){
                    objComponenteGenerador.setFinish(true);
                    return objComponenteGenerador;
                }
            } 
        }
        return null;
    }
    
    private static ComponenteDistribuidorGeneradorVinculador crearComponenteGeneradorVinculadorPorComponenteBaseStandard(ComponenteBaseStandar objComponenteBaseStandar, ObjetoTipoDatoReflexion objTipoDatoModeloAnalizado/*, int modo*/) {
        ComponenteDistribuidorGeneradorVinculador objComponenteGenerador = 
            GeneradorComponentes.crearComponenteGeneradorVinculador(objComponenteBaseStandar, objTipoDatoModeloAnalizado.getObjClass(), false, false, true);
        
        if(objComponenteGenerador != null){       
            objComponenteGenerador.setObjTipoDato(objTipoDatoModeloAnalizado);
            ArrayList<String> objE = new ArrayList<String>();
            objE.add("Colección de Objetos: " + objTipoDatoModeloAnalizado.getStrClassPath());                                            
            objComponenteGenerador.setObjItems(objE);       

            if(objComponenteGenerador.getObjPlantillaComboDistribucionGrupalSeleccionada() != null){
                //objComponenteGenerador.getObjDistribuidorGrupalSeleccionado().actualizarPlantillaComboSeleccionada(objComponenteGenerador.getObjPlantillaComboDistribucionGrupalSeleccionada());
                if(objComponenteGenerador.ubicarComponentesEnTablaDistribucion()){
                    objComponenteGenerador.setFinish(true);
                    return objComponenteGenerador;
                }
            } 
        }
        return null;
    }

    private static ComponenteDistribuidorGeneradorEnum crearComponenteGeneradorEnumPorComponenteBasePersonalizado(ComponenteBasePersonalizado objComponenteBasePersonalizado, ObjetoTipoDatoReflexion objTipoDatoModeloAnalizado) {
        ComponenteDistribuidorGeneradorEnum objComponenteGenerador = 
            GeneradorComponentes.crearComponenteGeneradorEnum(objComponenteBasePersonalizado, objTipoDatoModeloAnalizado.getObjClass().getCanonicalName());
        
        if(objComponenteGenerador != null){

            objComponenteGenerador.setObjTipoDato(objTipoDatoModeloAnalizado);

            ArrayList<String> objE = new ArrayList<String>();
            for(Object e :objTipoDatoModeloAnalizado.getObjClass().getEnumConstants()){
                objE.add(e.toString());
            }                        

            objComponenteGenerador.setObjItems(objE);

            if(objComponenteGenerador.getObjPlantillaComboDistribucionGrupalSeleccionada() != null){
                objComponenteGenerador.getObjDistribuidorGrupalSeleccionado().actualizarPlantillaComboSeleccionada(objComponenteGenerador.getObjPlantillaComboDistribucionGrupalSeleccionada());
                if(objComponenteGenerador.ubicarComponentesEnTablaDistribucion()){
                    objComponenteGenerador.setFinish(true);
                    return objComponenteGenerador;
                }
            }  
        }
        return null;
    }
    
    private static ComponenteDistribuidorGeneradorVinculador crearComponenteGeneradorVinculadorPorComponenteBasePersonalizado(ComponenteBasePersonalizado objComponenteBasePersonalizado, ObjetoTipoDatoReflexion objTipoDatoModeloAnalizado) {
        ComponenteDistribuidorGeneradorVinculador objComponenteGenerador = 
            GeneradorComponentes.crearComponenteGeneradorVinculador(objComponenteBasePersonalizado, objTipoDatoModeloAnalizado.getObjClass().getCanonicalName());
        
        if(objComponenteGenerador != null){

            objComponenteGenerador.setObjTipoDato(objTipoDatoModeloAnalizado);

            ArrayList<String> objE = new ArrayList<String>();
            objE.add("Colección de Objetos: " + objTipoDatoModeloAnalizado.getStrClassPath());                                            
            objComponenteGenerador.setObjItems(objE);                                

            if(objComponenteGenerador.getObjPlantillaComboDistribucionGrupalSeleccionada() != null){
                objComponenteGenerador.getObjDistribuidorGrupalSeleccionado().actualizarPlantillaComboSeleccionada(objComponenteGenerador.getObjPlantillaComboDistribucionGrupalSeleccionada());
                if(objComponenteGenerador.ubicarComponentesEnTablaDistribucion()){
                    objComponenteGenerador.setFinish(true);
                    return objComponenteGenerador;
                }
            }  
        }
        return null;
    }
    
    /**
     * 
     * @param objTipoDatoModeloAnalizado
     * @param modo
     * @return
     */
    public static ArrayList<ComponenteDistribuidor> devolverColeccionGenericaPorTipoDato(ObjetoTipoDatoReflexion objTipoDatoModeloAnalizado, int modo){
        ArrayList<ComponenteDistribuidor> objComponentesGenericos = new ArrayList<ComponenteDistribuidor>();               
        
        if(objTipoDatoModeloAnalizado != null){

            //validar si es coleccion
            if(objTipoDatoModeloAnalizado.getObjCaso().isCollection()){
                ArrayList<ObjetoTipoDatoReflexion> objTiposGenericos = objTipoDatoModeloAnalizado.getObjTiposGenericos();                            

                for(ObjetoTipoDatoReflexion objTipoDatoGenerico : objTiposGenericos){                                

                    ComponenteDistribuidorGenerador objComponenteGeneradorGenerico = devolverComponenteGenericoPorTipoDato(objTipoDatoGenerico/*, modo*/);

                    if(objComponenteGeneradorGenerico != null){                    
                        objComponentesGenericos.add(objComponenteGeneradorGenerico);                                    
                    }
                    else{
                        Utileria.mostrarMensaje(CuatroApp.getApplication().getMainFrame(), 
                                "No se puede representar adecuadamente el Tipo de Dato: " + objTipoDatoModeloAnalizado.getStrClassPath() + 
                                ".\nDebe generar una representación para el Tipo de Dato: " + objTipoDatoGenerico.getStrClassPath(), 
                                "", JOptionPane.WARNING_MESSAGE);
                        return null;
                    }
                }       
            }
            return objComponentesGenericos;
        }else{
            UtilRender.printlnConsole("Objeto Tipo Dato Modelo Analizado Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
        return null;
    }
    
    /**
     * 
     * @param objTipoDatoGenerico
     * @return
     */
    public static ComponenteDistribuidorGenerador devolverComponenteGenericoPorTipoDato(ObjetoTipoDatoReflexion objTipoDatoGenerico/*, int modo*/){
        if(UtilRepresentacion.objBibliotecaTrabajoLocal.existeComponenteGeneradorPorTipoDato(objTipoDatoGenerico/*, modo*/)){
            ComponenteDistribuidorGenerador objComponenteGeneradorGenerico = 
                    UtilRepresentacion.objBibliotecaTrabajoLocal.buscarComponenteGeneradorPorTipoDato(objTipoDatoGenerico);
            return objComponenteGeneradorGenerico;                                    
        }        
        return null;
    }
    
    /**
     * 
     * @param objComponenteDistribuidor
     * @param objTipoDatoModeloAnalizado
     * @param modo
     * @return
     */
    public static ModeloAsociado getObjModeloAsociado(ComponenteDistribuidor objComponenteDistribuidor, ObjetoTipoDatoReflexion objTipoDatoModeloAnalizado, int modo){
        if(objComponenteDistribuidor != null){
            ModeloAsociado objModeloAsociado = null;
            ArrayList<ComponenteDistribuidor> objComponentesGenericos = new ArrayList<ComponenteDistribuidor>();               

            //validar si es coleccion
            if(objTipoDatoModeloAnalizado.getObjCaso().isCollection()){
                TipoColeccionModeloAsociado eTipoColeccionModeloAsociado = GeneradorComponentes.devolverTipoColeccionModeloAsociado(objTipoDatoModeloAnalizado.getObjClass());
                objModeloAsociado = new ModeloAsociado(eTipoColeccionModeloAsociado, objComponenteDistribuidor, ModeloAsociado.MODO_COLLECTION);

                ArrayList<ObjetoTipoDatoReflexion> objTiposGenericos = objTipoDatoModeloAnalizado.getObjTiposGenericos();                            

                for(ObjetoTipoDatoReflexion objTipoDatoGenerico : objTiposGenericos){                                
                    if(UtilRepresentacion.objBibliotecaTrabajoLocal.existeComponenteGeneradorPorTipoDato(objTipoDatoGenerico/*, modo*/)){
                        ComponenteDistribuidorGenerador objComponenteGeneradorGenerico = 
                                UtilRepresentacion.objBibliotecaTrabajoLocal.buscarComponenteGeneradorModoOperacion(objTipoDatoGenerico, modo);
                        objComponentesGenericos.add(objComponenteGeneradorGenerico);                                    
                    }
                    else{
                        Utileria.mostrarMensaje(CuatroApp.getApplication().getMainFrame(), 
                                "No se puede representar adecuadamente el Tipo de Dato: " + objTipoDatoModeloAnalizado.getStrClassPath() + 
                                ".\nDebe generar una representación para el Tipo de Dato: " + objTipoDatoGenerico.getStrClassPath(), 
                                "", JOptionPane.WARNING_MESSAGE);
                        return null;
                    }
                }
            }
            return objModeloAsociado;
        }else{
            UtilRender.printlnConsole("Objeto componente distribuidor Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
        return null;
    }
    
    /**
     * 
     * @param objTipoDatoModeloAnalizado
     * @return
     */
    public static ComponenteDistribuidorGenerador devolverComponenteIncluidoEnArrayPorTipoDato(ObjetoTipoDatoReflexion objTipoDatoModeloAnalizado){
        if(objTipoDatoModeloAnalizado != null){
            ComponenteDistribuidorGenerador objComponenteGeneradorIncluido = null;
            //validar si es array
            if(objTipoDatoModeloAnalizado.getObjCaso().isArray()){
                ObjetoTipoDatoReflexion objTipoGet = objTipoDatoModeloAnalizado.getObjTipoIncluido();

                if(UtilRepresentacion.objBibliotecaTrabajoLocal.existeComponenteGeneradorPorTipoDato(objTipoGet)){
                    objComponenteGeneradorIncluido = 
                            UtilRepresentacion.objBibliotecaTrabajoLocal.buscarComponenteGeneradorPorTipoDato(objTipoGet);                                                               
                }
                else{
                    Utileria.mostrarMensaje(CuatroApp.getApplication().getMainFrame(), 
                            "No se puede representar adecuadamente el Tipo de Dato: " + objTipoDatoModeloAnalizado.getStrClassPath() + 
                            ".\nDebe generar una representación para el Tipo de Dato: " + objTipoGet.getStrClassPath(), 
                            "", JOptionPane.WARNING_MESSAGE);
                    return null;
                }                               
            }
            return objComponenteGeneradorIncluido;
        }else{
            UtilRender.printlnConsole("Objeto Tipo Dato Modelo Analizado Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
        return null;
    }
    
    /**
     * @DefinicionMetodo
     * @param objTipoDatoModeloAnalizado @DefinicionParametro     
     * @return @DefinicionReturn
     */
    public static ComponenteBase devolverComponenteBasePorTipoDato(ObjetoTipoDatoReflexion objTipoDatoModeloAnalizado){
        if(objTipoDatoModeloAnalizado != null){
            TipoDatoRepresentacionBase objTipoDatoRepresentacionBase;
            ReferenciaPatronBase objRefBase;        
            CasoRepresentacion objCaso;
            TipoCaso eCaso;    

            objCaso = objTipoDatoModeloAnalizado.getObjCaso();
            eCaso = objCaso.geteCaso();            
            //evaluar el CasoRepresentacion de Representacion
            if(eCaso == TipoCaso.eClaseMundo){
                ObjetoTipoDatoReflexion objTipoDatoModeloAnalizadoToString = GeneradorComponentes.devolverTipoDatoReflexionPorClass(String.class);
                objTipoDatoRepresentacionBase = GeneradorComponentes.devolverTipoDatoRepresentacionBasePorTipoDato(objTipoDatoModeloAnalizadoToString);
                objRefBase = GeneradorComponentes.objPatronRepresentacionBase.getReferenciaBaseTipoDato(objTipoDatoRepresentacionBase);                
                ComponenteBase objComponenteBasePatron = objRefBase.getRepresentacion();
                return objComponenteBasePatron;            
            }
            else{            
                //se obtiene el tipo de Representacion base                
                objTipoDatoRepresentacionBase = GeneradorComponentes.devolverTipoDatoRepresentacionBasePorTipoDato(objTipoDatoModeloAnalizado);
                objRefBase = GeneradorComponentes.objPatronRepresentacionBase.getReferenciaBaseTipoDato(objTipoDatoRepresentacionBase);                
                ComponenteBase objComponenteBasePatron = objRefBase.getRepresentacion();
                return objComponenteBasePatron;                            
            }
        }else{
            UtilRender.printlnConsole("Objeto Tipo Dato Modelo Analizado Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
        return null;
    }
    
    /**
     * Devuelve el Componente Base Vinculador que soporta el Tipo de Dato o null en caso contrario.
     * @param objTipoDatoModeloAnalizado Tipo de Dato.
     * @return Componente Base Vinculador que soporta el Tipo de Dato o null en caso contrario.
     * @deprecated Se ha utilizado una Representación por Tipos de Datos.
     */
    public static ComponenteBaseLink devolverRepresentacionLink(ObjetoTipoDatoReflexion objTipoDatoModeloAnalizado){
      if(objTipoDatoModeloAnalizado != null){
        try{
            Class<?> objClassTipoDato = objTipoDatoModeloAnalizado.getObjClass();
            for(ComponenteBaseLink objComponenteBaseLink : GeneradorComponentes.objComponentesLinksBase){
                for(String strClassPath : objComponenteBaseLink.getObjCompatibles()){
                    try {
                        Class<?> objClass = Class.forName(strClassPath);
                        while(objClassTipoDato.getSuperclass() != null){
                            if(objClassTipoDato.getCanonicalName().equals(objClass.getCanonicalName())){
                                return objComponenteBaseLink;
                            }
                            objClassTipoDato = objClassTipoDato.getSuperclass();
                        }
                    } catch (ClassNotFoundException ex) {
                        Logger.getLogger(GeneradorComponentes.class.getName()).log(Level.SEVERE, null, ex);
                        continue;
                    }
                }
            }
        }catch(java.lang.NullPointerException ex) {
            Logger.getLogger(GeneradorComponentes.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }else{
            UtilRender.printlnConsole("Objeto Tipo Dato Modelo Analizado Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
      return null;
    }
    
    /**
     * Devuelve el <code>ComponenteDistribuidorGenerador</code> incluido en la Biblioteca que soporta el Tipo de Dato o null si no existe.
     * @param objTipoDatoModeloAnalizado Tipo de Dato.
     * @return <code>ComponenteDistribuidorGenerador</code> incluido en la Biblioteca que soporta el Tipo de Dato o null si no existe.
     */
    public static ComponenteDistribuidorGenerador devolverRepresentacionTipoDatoDesdeBibliotecas(ObjetoTipoDatoReflexion objTipoDatoModeloAnalizado){
        ComponenteDistribuidorGenerador objComponenteGenerador = null;
        objComponenteGenerador = UtilRepresentacion.objBibliotecaTrabajoLocal.buscarComponenteGeneradorPorTipoDato(objTipoDatoModeloAnalizado);
        if(objComponenteGenerador == null){
            objComponenteGenerador = UtilRepresentacion.objBibliotecaTrabajoSwap.buscarComponenteGeneradorPorTipoDato(objTipoDatoModeloAnalizado);
        }
        return objComponenteGenerador;
    }
    
    /**
     * Crea la Representación del Tipo de Dato del Valor de Retorno de Método Getter.
     * @param objTipoDato Tipo de Dato del Valor de Retorno.
     * @param objComponenteGeneradorMetodoGetter ComponenteGenerador que Representa el Método.
     * @param objMethod Representación del Método.
     * @param intoBiblioteca indica si la Representacion puede ser incluida desde la Biblioteca.
     * @return boolean que indica el resultado del proceso.
     */
    public static boolean construirComponenteGeneradorMetodoGetter(ObjetoTipoDatoReflexion objTipoDato, ComponenteDistribuidorGeneradorMetodoGetter objComponenteGeneradorMetodoGetter, Method objMethod, boolean intoBiblioteca) {
      if(objTipoDato != null){
        ComponenteDistribuidorGenerador objComponenteGenerador = GeneradorComponentes.generarRepresentacionPorTipoDato(objTipoDato, false, false);
        if (objComponenteGenerador != null) {
            objComponenteGeneradorMetodoGetter.setObjComponenteGeneradorReturn(objComponenteGenerador);
            String strNombreMetodo = objMethod.getName();
            strNombreMetodo = strNombreMetodo.substring(3);
            String strTituloMetodo = new String(strNombreMetodo.toCharArray());
            strTituloMetodo = Utileria.getKamelCaseFormat(strTituloMetodo, true);            
            GeneradorComponentes.configurePropertiesToView(objComponenteGeneradorMetodoGetter, objMethod);
            objComponenteGeneradorMetodoGetter.setFinish(true);               
            return true;
        } else if(intoBiblioteca){
            objComponenteGenerador = GeneradorComponentes.generarRepresentacionPorTipoDato(objTipoDato, false, false);
            return construirComponenteGeneradorMetodoGetter(objComponenteGenerador, objComponenteGeneradorMetodoGetter, objMethod);            
        }        
        return false;
    }else{
            UtilRender.printlnConsole("Objeto Tipo Dato Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
      return false;
    }
    
    /**
     * 
     * @param objTipoDato
     * @param objComponenteGeneradorMetodoSetter
     * @param objMethod
     * @param intoBiblioteca
     * @return
     */
    public static boolean construirComponenteGeneradorMetodoSetter(ObjetoTipoDatoReflexion objTipoDato, ComponenteDistribuidorGeneradorMetodoSetter objComponenteGeneradorMetodoSetter, Method objMethod, boolean intoBiblioteca) {
       if(objTipoDato != null){ 
        ComponenteDistribuidorGenerador objComponenteGenerador = GeneradorComponentes.generarRepresentacionPorTipoDato(objTipoDato, false, true);
        if (objComponenteGenerador != null) {
            //Configura el Nombre formateado
            String[] params             = devolverNombresParametroMetodo(objMethod);
            String[] nombres            = devolverParametrosFormateados(params);            
            formatearNombresComponenteGenerador(objComponenteGenerador, params[0], nombres[0]);
            
            objComponenteGeneradorMetodoSetter.setObjComponenteGeneradorParam(objComponenteGenerador);
            String strNombreMetodo = objMethod.getName();
            strNombreMetodo = strNombreMetodo.substring(3);
            String strTituloMetodo = new String(strNombreMetodo.toCharArray());
            strTituloMetodo = Utileria.getKamelCaseFormat(strTituloMetodo, true);            
            //GeneradorComponentes.configurePropertiesToView(objComponenteGeneradorMetodoSetter, objMethod);
            objComponenteGeneradorMetodoSetter.setFinish(true);
            return true;
        } else if(intoBiblioteca){
            objComponenteGenerador = GeneradorComponentes.generarRepresentacionPorTipoDato(objTipoDato, false, true);
            return construirComponenteGeneradorMetodoSetter(objComponenteGenerador, objComponenteGeneradorMetodoSetter, objMethod);            
        }        
        return false;
    }else{
            UtilRender.printlnConsole("Objeto Tipo Dato Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
       return false;
    }
    
    private static boolean construirComponenteGeneradorMetodoGetter(ComponenteDistribuidorGenerador objComponenteGenerador, ComponenteDistribuidorGeneradorMetodoGetter objComponenteGeneradorMetodoGetter, Method objMethod) {         
        if (objComponenteGenerador != null) {
            objComponenteGeneradorMetodoGetter.setObjComponenteGeneradorReturn(objComponenteGenerador);
            String strNombreMetodo = objMethod.getName();
            strNombreMetodo = strNombreMetodo.substring(3);
            String strTituloMetodo = new String(strNombreMetodo.toCharArray());
            strTituloMetodo = Utileria.getKamelCaseFormat(strTituloMetodo, true);            
            GeneradorComponentes.configurePropertiesToView(objComponenteGeneradorMetodoGetter, objMethod);
            objComponenteGeneradorMetodoGetter.setFinish(true);
            return true;
        }
        return false;
    }
    
    private static boolean construirComponenteGeneradorMetodoSetter(ComponenteDistribuidorGenerador objComponenteGenerador, ComponenteDistribuidorGeneradorMetodoSetter objComponenteGeneradorMetodoSetter, Method objMethod) {         
        if (objComponenteGenerador != null) {
            //Configura el Nombre formateado
            String[] params             = devolverNombresParametroMetodo(objMethod);
            String[] nombres            = devolverParametrosFormateados(params);            
            formatearNombresComponenteGenerador(objComponenteGenerador, params[0], nombres[0]);
            
            objComponenteGeneradorMetodoSetter.setObjComponenteGeneradorParam(objComponenteGenerador);
            String strNombreMetodo = objMethod.getName();
            strNombreMetodo = strNombreMetodo.substring(3);
            String strTituloMetodo = new String(strNombreMetodo.toCharArray());
            strTituloMetodo = Utileria.getKamelCaseFormat(strTituloMetodo, true);            
            //GeneradorComponentes.configurePropertiesToView(objComponenteGeneradorMetodoSetter, objMethod);
            objComponenteGeneradorMetodoSetter.setFinish(true);
            return true;
        }
        return false;
    }

    /**
     * Configura la Representación de un Método de una Clase del Modelo Analizado.
     * @param objComponenteGeneradorMetodo Definición Inicial de la Representación del Método.
     * @param objReflexion Representación formal del Método en el Contexto de la Aplicación.
     * @param intoBiblioteca Determina si la Representación puede obtenerse desde la Biblioteca.          
     * @return @DefinicionReturn Representación Configurada de un Método de una Clase del Modelo analizado.
     */
    public static ComponenteDistribuidorGeneradorMetodo construirComponenteGeneradorMetodo(ComponenteDistribuidorGeneradorMetodo objComponenteGeneradorMetodo, ObjetoReflexion objReflexion, boolean intoBiblioteca){
      if(objReflexion != null){
        try{            
            Method objMethod = (Method) objReflexion.getObj();            
            //Determinar el Tipo de Método
            if(UtilRepresentacion.isGetter(objMethod) || UtilRepresentacion.isIs(objMethod)){//Métod de Visualización de Propiedades.
                //Generar Representación Inicial.                
                ComponenteDistribuidorGeneradorMetodoGetter objComponenteGeneradorMetodoGetter = (ComponenteDistribuidorGeneradorMetodoGetter) objComponenteGeneradorMetodo;
                //Obtener el Tipo formal en el Contexto de la Aplicación.
                Class<?> objReturn = objMethod.getReturnType();        
                ObjetoTipoDatoReflexion objTipoDato = GeneradorComponentes.devolverTipoDatoReflexionPorClass(objReturn);                
                //Establecer el Caso de Representación del Tipo de Dato del Valor de Retorno
                //si el caso de representación es clase mundo entonces debe existir un objeto CustomObjetoReflexion
                //que determine como se realizará la representación de tipo de dato
                //estas representaciones pueden ser totales o parciales sin embargo en todos los casos
                //analizados se debe generar el panel de representacion de la clase 
                if(objTipoDato.getObjCaso().geteCaso() == TipoCaso.eClaseMundo){
                    CustomObjetoReflexion objCustomObjetoReflexion = objReflexion.getObjCustomObjetoReflexion();
                    switch(objCustomObjetoReflexion.getRepresentacion()){                        
                        case CustomObjetoReflexion.REPRESENTACION_PANEL:
                            
                            if(objCustomObjetoReflexion.isCreatePanel()){
                                if(construirComponenteGeneradorMetodoGetter(objTipoDato, objComponenteGeneradorMetodoGetter, objMethod, intoBiblioteca)){
                                    return objComponenteGeneradorMetodoGetter;
                                }                                
                            }
                            else if(objCustomObjetoReflexion.getObjComponenteDistribuidorGenerador() != null){
                                if(construirComponenteGeneradorMetodoGetter(objCustomObjetoReflexion.getObjComponenteDistribuidorGenerador(), objComponenteGeneradorMetodoGetter, objMethod)){
                                    return objComponenteGeneradorMetodoGetter;
                                }
                            }
                            
                            break;
                    }
                }
                if(construirComponenteGeneradorMetodoGetter(objTipoDato, objComponenteGeneradorMetodoGetter, objMethod, intoBiblioteca)){
                    return objComponenteGeneradorMetodoGetter;
                }
            }
            else if(UtilRepresentacion.isSetter(objMethod)){
                
                ComponenteDistribuidorGeneradorMetodoSetter objComponenteGeneradorMetodoSetter = (ComponenteDistribuidorGeneradorMetodoSetter) objComponenteGeneradorMetodo;
                Class<?> objParam = objMethod.getParameterTypes()[0];
                ObjetoTipoDatoReflexion objTipoDato = GeneradorComponentes.devolverTipoDatoReflexionPorClass(objParam);
                
                //Establecer el Caso de Representación del Tipo de Dato del Valor de Retorno
                //si el caso de representación es clase mundo entonces debe existir un objeto CustomObjetoReflexion
                //que determine como se realizará la representación de tipo de dato
                //estas representaciones pueden ser totales o parciales sin embargo en todos los casos
                //analizados se debe generar el panel de representacion de la clase 
                if(objTipoDato.getObjCaso().geteCaso() == TipoCaso.eClaseMundo){
                    CustomObjetoReflexion objCustomObjetoReflexion = objReflexion.getObjCustomObjetoReflexion();
                    switch(objCustomObjetoReflexion.getRepresentacion()){                        
                        case CustomObjetoReflexion.REPRESENTACION_PANEL:
                            
                            if(objCustomObjetoReflexion.isCreatePanel()){
                                if(construirComponenteGeneradorMetodoSetter(objTipoDato, objComponenteGeneradorMetodoSetter, objMethod, intoBiblioteca)){
                                    return objComponenteGeneradorMetodoSetter;
                                }                                
                            }
                            else if(objCustomObjetoReflexion.getObjComponenteDistribuidorGenerador() != null){
                                if(construirComponenteGeneradorMetodoSetter(objCustomObjetoReflexion.getObjComponenteDistribuidorGenerador(), objComponenteGeneradorMetodoSetter, objMethod)){
                                    return objComponenteGeneradorMetodoSetter;
                                }
                            }
                            
                            break;
                    }
                }
                if(construirComponenteGeneradorMetodoSetter(objTipoDato, objComponenteGeneradorMetodoSetter, objMethod, intoBiblioteca)){
                    return objComponenteGeneradorMetodoSetter;
                }
            }
            else{
                UtilRender.msgAdvertencia("Metodo: " + objMethod.toGenericString() + " No Soportado.");
            }
        }catch(java.lang.Exception ex){
            Logger.getLogger(GeneradorComponentes.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }else{
            UtilRender.printlnConsole("Objeto Tipo Dato Reflexión Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
      return null;
    }
    
    /**
     * 
     * @param objTipoDato
     * @param objIncluidos
     * @param intoBiblioteca
     * @return
     */
    public static ComponenteDistribuidorGeneradorClaseCompleja construirComponenteGeneradorClaseCompleja(ObjetoTipoDatoReflexion objTipoDato, ArrayList<ObjetoReflexion> objIncluidos, boolean intoBiblioteca){         
        if(objTipoDato != null){
            PatronRepresentacionBase objPatron = GeneradorComponentes.objPatronRepresentacionBase;
            ComponenteDistribuidorGeneradorClaseCompleja objComponenteGeneradorClase = objPatron.getContenedorClaseCompleja(objTipoDato.getObjClass());
            GeneradorComponentes.construirComponenteGeneradorClaseCompleja(objComponenteGeneradorClase, objTipoDato, objIncluidos, intoBiblioteca);
            objComponenteGeneradorClase.setObjTipoDato(objTipoDato);
            objComponenteGeneradorClase.cargarPlantillasDesdeArchivoProperties(null);
            GeneradorComponentes.actualizarPropiedadString(objComponenteGeneradorClase, "Name", objTipoDato);
            initDistribucion(objComponenteGeneradorClase);
            return objComponenteGeneradorClase;
        }else{
            UtilRender.printlnConsole("Objeto Tipo Dato  Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
        return null;
    }
   
    /**
     * 
     * @param objTipoDato
     * @param objIncluidos
     * @param intoBiblioteca
     * @return
     */
    public static ComponenteDistribuidorGeneradorString construirComponenteGeneradorString(ObjetoTipoDatoReflexion objTipoDato, ArrayList<ObjetoReflexion> objIncluidos, boolean intoBiblioteca){                         
      if(objTipoDato != null){
        ComponenteBase objComponenteBase = GeneradorComponentes.devolverComponenteBasePorTipoDato(objTipoDato);                
        if(objComponenteBase != null){
            if(objComponenteBase instanceof ComponenteBaseStandar){
                ComponenteBaseStandar objComponenteBaseStandar = (ComponenteBaseStandar) objComponenteBase;
                ComponenteDistribuidorGeneradorString objComponenteGeneradorString = 
                GeneradorComponentes.crearComponenteGeneradorStringPorComponenteBaseStandard(objComponenteBaseStandar, objTipoDato);                
                if(objComponenteGeneradorString != null){
                    objComponenteGeneradorString.setObjReflexionMetodosGetters(objIncluidos);
                    //objComponenteGeneradorString.setObjTipoDato(objTipoDato);
                    //objComponenteGeneradorString.cargarPlantillasDesdeArchivoProperties(null);
                    GeneradorComponentes.actualizarPropiedadString(objComponenteGeneradorString, "Name", objTipoDato);
                    ComponenteGeneradoSimple obj = objComponenteGeneradorString.getObjComponentesGenerados().get(0);
                    GeneradorComponentes.setValorPropiedadString(obj, "Text", objTipoDato.getObjClass().getSimpleName());
                    initDistribucion(objComponenteGeneradorString);
                    return objComponenteGeneradorString;
                }                
            }
            else if(objComponenteBase instanceof ComponenteBasePersonalizado){
                ComponenteBasePersonalizado objComponenteBasePersonalizado = (ComponenteBasePersonalizado) objComponenteBase;
                ComponenteDistribuidorGeneradorString objComponenteGeneradorString = 
                GeneradorComponentes.crearComponenteGeneradorStringPorComponenteBasePersonalizado(objComponenteBasePersonalizado, objTipoDato);                
                if(objComponenteGeneradorString != null){
                    objComponenteGeneradorString.setObjReflexionMetodosGetters(objIncluidos);
                    //objComponenteGeneradorString.setObjTipoDato(objTipoDato);
                    //objComponenteGeneradorString.cargarPlantillasDesdeArchivoProperties(null);
                    GeneradorComponentes.actualizarPropiedadString(objComponenteGeneradorString, "Name", objTipoDato);
                    ComponenteGeneradoSimple obj = objComponenteGeneradorString.getObjComponentesGenerados().get(0);
                    GeneradorComponentes.setValorPropiedadString(obj, "Text", objTipoDato.getObjClass().getSimpleName());
                    initDistribucion(objComponenteGeneradorString);
                    return objComponenteGeneradorString;
                }
            }                          
        }
        return null;
    }else{
            UtilRender.printlnConsole("Objeto Tipo Dato  Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
      return null;
    }
    
    /**
     * 
     * @param objTipoDato
     * @param objIncluidos
     * @param intoBiblioteca
     * @return
     */
    public static ComponenteDistribuidorGeneradorVinculador construirComponenteGeneradorVinculador(ObjetoTipoDatoReflexion objTipoDato, boolean intoBiblioteca){
        UtilRender.printlnConsole("Vinculación de Propiedades Computadas.", UtilRender.ACTION_NORMAL, false);                                        
        ComponenteBase objComponenteBase = GeneradorComponentes.devolverComponenteBaseClassPath("javax.swing.JComboBox");
        if(objComponenteBase != null){
            if(objComponenteBase instanceof ComponenteBaseStandar){
                ComponenteBaseStandar objComponenteBaseStandar = (ComponenteBaseStandar) objComponenteBase;
                ComponenteDistribuidorGeneradorVinculador objComponenteGeneradorVinculador = 
                    GeneradorComponentes.crearComponenteGeneradorVinculadorPorComponenteBaseStandard(objComponenteBaseStandar, objTipoDato);                
                if(objComponenteGeneradorVinculador != null){                    
                    //objComponenteGeneradorVinculador.setObjTipoDato(objTipoDato);
                    //objComponenteGeneradorVinculador.cargarPlantillasDesdeArchivoProperties(null);
                    GeneradorComponentes.actualizarPropiedadString(objComponenteGeneradorVinculador, "Name", objTipoDato);
                    ComponenteGeneradoSimple obj = objComponenteGeneradorVinculador.getObjComponentesGenerados().get(0);
                    GeneradorComponentes.setValorPropiedadString(obj, "Text", objTipoDato.getObjClass().getSimpleName());
                    initDistribucion(objComponenteGeneradorVinculador);
                    return objComponenteGeneradorVinculador;
                }                
            }
            else if(objComponenteBase instanceof ComponenteBasePersonalizado){
                ComponenteBasePersonalizado objComponenteBasePersonalizado = (ComponenteBasePersonalizado) objComponenteBase;
                ComponenteDistribuidorGeneradorVinculador objComponenteGeneradorVinculador = 
                    GeneradorComponentes.crearComponenteGeneradorVinculadorPorComponenteBasePersonalizado(objComponenteBasePersonalizado, objTipoDato);                
                if(objComponenteGeneradorVinculador != null){                    
                    //objComponenteGeneradorVinculador.setObjTipoDato(objTipoDato);
                    //objComponenteGeneradorVinculador.cargarPlantillasDesdeArchivoProperties(null);
                    GeneradorComponentes.actualizarPropiedadString(objComponenteGeneradorVinculador, "Name", objTipoDato);
                    ComponenteGeneradoSimple obj = objComponenteGeneradorVinculador.getObjComponentesGenerados().get(0);
                    GeneradorComponentes.setValorPropiedadString(obj, "Text", objTipoDato.getObjClass().getSimpleName());
                    initDistribucion(objComponenteGeneradorVinculador);
                    return objComponenteGeneradorVinculador;
                }
            }                          
        }
        return null;
    }
   
    /**
     * Generar una Representación Compleja para un Tipo de Dato Clase desde el Asistente.
     * @param objTempSwap Objeto devulveto por el Asistente.
     * @return Representación Compleja para un Tipo de Dato Clase desde el Asistente.
     */
    public static ComponenteDistribuidorGeneradorClaseCompleja construirComponenteGeneradorClaseCompleja(ObjectTempSwapWizard objTempSwap){
       if(objTempSwap != null){
            try{            
                ObjetoTipoDatoReflexion objTipoDato = (ObjetoTipoDatoReflexion) objTempSwap.getObj();
                ArrayList<ObjetoReflexion> objIncluidos = (ArrayList<ObjetoReflexion>) objTempSwap.get(ObjectTempSwapWizard.COLECCION);
                boolean intoBiblioteca = false;
                return construirComponenteGeneradorClaseCompleja(objTipoDato, objIncluidos, intoBiblioteca);
            }catch(java.lang.Exception ex){
                Logger.getLogger(GeneradorComponentes.class.getName()).log(Level.SEVERE, null, ex);
            }
            return null;
    }else{
            UtilRender.printlnConsole("Objeto Temp swap Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
       return null;
    }
    
    /**
     * Generar una Representación Simplificada para un Tipo de Dato Clase desde el Asistente.
     * @param objTempSwap Objeto devulveto por el Asistente.
     * @return Representación Simplificada para un Tipo de Dato Clase desde el Asistente.
     */
    public static ComponenteDistribuidorGeneradorString construirComponenteGeneradorString(ObjectTempSwapWizard objTempSwap){
      if(objTempSwap != null){
        try{            
            ObjetoTipoDatoReflexion objTipoDato = (ObjetoTipoDatoReflexion) objTempSwap.getObj();
            ArrayList<ObjetoReflexion> objIncluidos = (ArrayList<ObjetoReflexion>) objTempSwap.get(ObjectTempSwapWizard.COLECCION);
            boolean intoBiblioteca = false;
            return construirComponenteGeneradorString(objTipoDato, objIncluidos, intoBiblioteca);
        }catch(java.lang.Exception ex){
            Logger.getLogger(GeneradorComponentes.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    } else{
            UtilRender.printlnConsole("Objeto Temp swap Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
      return null;
    }

    
    /**
     * Generar una Representación Simplificada para un Tipo de Dato Clase desde el Asistente.
     * @param objTempSwap Objeto devulveto por el Asistente.
     * @return Representación Simplificada para un Tipo de Dato Clase desde el Asistente.
     */
    public static ComponenteDistribuidorGeneradorVinculador construirComponenteGeneradorVinculador(ObjectTempSwapWizard objTempSwap){
      if(objTempSwap!= null){ 
            try{            
                ObjetoTipoDatoReflexion objTipoDato = (ObjetoTipoDatoReflexion) objTempSwap.getObj();            
                boolean intoBiblioteca = false;                        
                return construirComponenteGeneradorVinculador(objTipoDato, intoBiblioteca);
            }catch(java.lang.Exception ex){
                Logger.getLogger(GeneradorComponentes.class.getName()).log(Level.SEVERE, null, ex);
            }
            return null;
        }else{
            UtilRender.printlnConsole("Objeto Tipo Dato Reflexión Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
      return null;
    }
    
    /**
     * @DefinicionMetodo
     * @param objComponenteGeneradorClase @DefinicionParametro
     * @param objTipoDato 
     * @param objPropiedadesSeleccionadas @param intoBiblioteca 
     * @param intoBiblioteca 
     * @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ComponenteDistribuidorGeneradorClaseCompleja construirComponenteGeneradorClaseCompleja(ComponenteDistribuidorGeneradorClaseCompleja objComponenteGeneradorClase, ObjetoTipoDatoReflexion objTipoDato, ArrayList<ObjetoReflexion> objPropiedadesSeleccionadas, boolean intoBiblioteca){
      if(objComponenteGeneradorClase != null){
        try{
            
            for(ObjetoReflexion objPropiedad : objPropiedadesSeleccionadas){
                if(objPropiedad.getObj() instanceof Field){//Propiedad - Atributo
                    Field objAtributo = (Field) objPropiedad.getObj();           
                    //No Aplica
                }                
                else if(objPropiedad.getObj() instanceof Method){//Propiedad - Método
                    Method objMetodo = (Method) objPropiedad.getObj();
                    ComponenteDistribuidorGeneradorMetodo objComponenteGeneradorMetodo = GeneradorComponentes.objPatronRepresentacionBase.getContenedorMetodo(objMetodo);
                    if(objComponenteGeneradorMetodo != null){
                        objComponenteGeneradorMetodo = construirComponenteGeneradorMetodo(objComponenteGeneradorMetodo, objPropiedad, intoBiblioteca);
                        if(objComponenteGeneradorMetodo != null){
                            objComponenteGeneradorMetodo.cargarPlantillasDesdeArchivoProperties(null);
                            initDistribucion(objComponenteGeneradorMetodo);
                            objComponenteGeneradorMetodo.setObjComponenteParent(objComponenteGeneradorClase);
                            objComponenteGeneradorMetodo.idColeccion = objComponenteGeneradorClase.getObjComponentes().size();
                            objComponenteGeneradorClase.addComponente(objComponenteGeneradorMetodo);
                            UtilRender.printlnConsole("Representación para el Método: " + objMetodo.toGenericString() + " de la Clase: " + objComponenteGeneradorClase.getStrClassPathTipoDato() + " agregada.", UtilRender.ACTION_NORMAL, false);                            
                        }
                        else{
                            objComponenteGeneradorClase.agregarEspera(objPropiedad);
                            UtilRender.printlnConsole("No existe Representación para el Método: " + objMetodo.toGenericString() + " de la Clase: " + objComponenteGeneradorClase.getStrClassPathTipoDato(), UtilRender.ACTION_NORMAL, false);                            
                        }
                    }
                }                
                else if(objPropiedad.getObjClass() != null){//Propiedad - Parametro - Constructor
                    try{
                        Class<?> objClass = objPropiedad.getObjClass();
                        ObjetoTipoDatoReflexion objTipoDatoParametro = GeneradorComponentes.devolverTipoDatoReflexionPorClass(objClass);
                        if(objTipoDatoParametro.getObjCaso().geteCaso() == TipoCaso.eClaseMundo){
                            ComponenteDistribuidorGenerador objComponenteGenerador = objPropiedad.getObjCustomObjetoReflexion().getObjComponenteDistribuidorGenerador();
                            if(objComponenteGenerador != null){                                                        
                                objComponenteGenerador.setObjComponenteParent(objComponenteGeneradorClase);
                                objComponenteGenerador.idColeccion = objComponenteGeneradorClase.getObjComponentes().size();
                                objComponenteGeneradorClase.addComponente(objComponenteGenerador);
                                UtilRender.printlnConsole("Representación para el Parametro: " + objClass.getCanonicalName() + " del Constructor de la Clase: " + objComponenteGeneradorClase.getStrClassPathTipoDato() + " agregada.", UtilRender.ACTION_NORMAL, false);
                            }  
                            else{
                                UtilRender.printlnConsole("No existe una Representación para el Parametro: " + objClass.getCanonicalName() + " del Constructor de la Clase: " + objComponenteGeneradorClase.getStrClassPathTipoDato() + " ó tal vez no se ha configurado la selección.", UtilRender.ACTION_NORMAL, false);                                
                            }
                        }
                        else{                                
                            ComponenteDistribuidorGenerador objComponenteGenerador = 
                                    GeneradorComponentes.generarRepresentacionPorTipoDato(objTipoDatoParametro, false, true);
                            if(objComponenteGenerador != null){                                                        
                                objComponenteGenerador.setObjComponenteParent(objComponenteGeneradorClase);
                                objComponenteGenerador.idColeccion = objComponenteGeneradorClase.getObjComponentes().size();

                                if(objComponenteGenerador instanceof ComponenteDistribuidorGeneradorUnitario){
                                    ComponenteDistribuidorGeneradorUnitario objComponenteTemp = (ComponenteDistribuidorGeneradorUnitario) objComponenteGenerador;
                                    if(objComponenteTemp.getObjComponenteGenerador().getObjClassSwing().getSimpleName().equals("JCheckBox")){
                                        ComponenteGeneradoInterno objComponenteGeneradoInterno = objComponenteTemp.getObjComponenteGenerador();
                                        GeneradorComponentes.setValorPropiedadString(objComponenteGeneradoInterno, "Text", objPropiedad.getStrNombre());
                                    }
                                    else{
                                        ComponenteGeneradoSimple objComponenteGeneradoSimple = objComponenteTemp.getObjComponentesGenerados().get(0);
                                        GeneradorComponentes.setValorPropiedadString(objComponenteGeneradoSimple, "Text", objPropiedad.getStrNombre());
                                    }
                                }
                                else if(objComponenteGenerador instanceof ComponenteDistribuidorGeneradorEnum){
                                    ComponenteDistribuidorGeneradorEnum objComponenteTemp = (ComponenteDistribuidorGeneradorEnum) objComponenteGenerador;
                                    ComponenteGeneradoSimple objComponenteGeneradoSimple = objComponenteTemp.getObjComponentesGenerados().get(0);
                                    GeneradorComponentes.setValorPropiedadString(objComponenteGeneradoSimple, "Text", objPropiedad.getStrNombre());

                                }
                                String strParametro = Utileria.getKamelCase(objPropiedad.getStrNombre(), true);                
                                String strTitle     = Utileria.getKamelCaseFormat(objPropiedad.getStrNombre(), true);
                                GeneradorComponentes.formatearNombreComponente(objComponenteGenerador, strParametro, objComponenteGenerador.getObjTipoDato().getStrNombre());
                                GeneradorComponentes.formatearNombresComponenteGenerador(objComponenteGenerador, strParametro, strTitle);
                                objComponenteGeneradorClase.addComponente(objComponenteGenerador);                                    
                                UtilRender.printlnConsole("Representación para el Parametro: " + objClass.getCanonicalName() + " del Constructor de la Clase: " + objComponenteGeneradorClase.getStrClassPathTipoDato() + " agregada.", UtilRender.ACTION_NORMAL, false);                            
                            }
                        }                        
                    }catch(java.lang.Exception ex){                        
                        //                                
                    }
                }
            }
            //GeneradorComponentes.setValorPropiedadString(objComponenteGeneradorClase, 
            //                "Name", objTipoDato.getStrNombre());
            return objComponenteGeneradorClase;
        }catch(java.lang.Exception ex){
            Logger.getLogger(GeneradorComponentes.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }  else{
            UtilRender.printlnConsole("Objeto componente generador clase Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
      return null;
    }
    
    /**
     * @DefinicionMetodo
@DefinicionParametro
     * @param objTempSwap 
@DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ComponenteDistribuidorContenedorEspejo construirComponenteAsistenteEspejo(ObjectTempSwapWizard objTempSwap){
       if(objTempSwap != null){
            try{            
                ArrayList<ComponenteDistribuidor> objIncluidos = (ArrayList<ComponenteDistribuidor>) objTempSwap.get(ObjectTempSwapWizard.COLECCION);

                incluirIntegradoresEnBiblioteca((ArrayList<ComponenteDistribuidor>) objIncluidos.clone());

                ComponenteBaseStandar objComponenteBase = GeneradorComponentes.getContenedorBase(0);

                ComponenteDistribuidorContenedorEspejo objComponenteContenedorAsistenteEspejo = 
                        GeneradorComponentes.crearComponenteContenedorAsistenteEspejo(objComponenteBase);

                objComponenteContenedorAsistenteEspejo.setObjComponentes(objIncluidos);
                objComponenteContenedorAsistenteEspejo.cargarPlantillasDesdeArchivoProperties(null);  
                initDistribucion(objComponenteContenedorAsistenteEspejo);
                //GeneradorComponentes.setValorPropiedadString(objComponenteIntegradorMetodo, "Name", objReflexion.getStrNombre());
                return objComponenteContenedorAsistenteEspejo;
            }catch(java.lang.Exception ex){
                Logger.getLogger(GeneradorComponentes.class.getName()).log(Level.SEVERE, null, ex);
            }
            return null;
        }else{
            UtilRender.printlnConsole("Objeto Temp swap Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
       return null;
    }
    
    /**
     * @DefinicionMetodo
     * @param objTempSwap 
@DefinicionParametro
@DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ComponenteDistribuidorIntegradorSimple construirComponenteIntegradorSimple(ObjectTempSwapWizard objTempSwap){
        if(objTempSwap != null){
            try{
                //Integer contenedor = (Integer) objTempSwap.get(ObjectTempSwapWizard.CONTENEDOR_REPRESENTACION);            
                ArrayList<ComponenteDistribuidor> objIncluidos = (ArrayList<ComponenteDistribuidor>) objTempSwap.get(ObjectTempSwapWizard.COLECCION);                      
                ComponenteDistribuidorIntegradorSimple objComponenteDistribuidorIntegradorSimple = 
                        GeneradorComponentes.construirComponenteIntegradorSimple(objIncluidos);
                return objComponenteDistribuidorIntegradorSimple;
            }catch(java.lang.Exception ex){
                Logger.getLogger(GeneradorComponentes.class.getName()).log(Level.SEVERE, null, ex);
            }
            return null;
        }else{
            UtilRender.printlnConsole("Objeto Temp swap Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
        return null;
    }
    
    /**
     * 
     * @param objComponentesDistribuidoresIncluidos
     * @return
     */
    public static boolean incluirIntegradoresEnBiblioteca(ArrayList<ComponenteDistribuidor> objComponentesDistribuidoresIncluidos){
       if(objComponentesDistribuidoresIncluidos != null){ 
            try{
                for(ComponenteDistribuidor objComponenteDistribuidor : objComponentesDistribuidoresIncluidos){
                    if(objComponenteDistribuidor instanceof ComponenteDistribuidorExtra){
                        if(!UtilRepresentacion.objBibliotecaTrabajoLocal.getObjComponentesExtras().contains((ComponenteDistribuidorExtra) objComponenteDistribuidor)){
                            ComponenteDistribuidorExtra objComponenteDistribuidorExtra = (ComponenteDistribuidorExtra) objComponenteDistribuidor;
                            UtilRepresentacion.objBibliotecaTrabajoLocal.add(objComponenteDistribuidorExtra);
                        }                    
                    }
                    else if(objComponenteDistribuidor instanceof ComponenteDistribuidorGenerador){
                        if(!UtilRepresentacion.objBibliotecaTrabajoLocal.getObjComponentesGeneradores().contains((ComponenteDistribuidorGenerador) objComponenteDistribuidor)){
                            ComponenteDistribuidorGenerador objComponenteDistribuidorGenerador = (ComponenteDistribuidorGenerador) objComponenteDistribuidor;
                            UtilRepresentacion.objBibliotecaTrabajoLocal.add(objComponenteDistribuidorGenerador);
                        }                    
                    }
                    else if(objComponenteDistribuidor instanceof ComponenteDistribuidorIntegrador){
                        if(!UtilRepresentacion.objBibliotecaTrabajoLocal.getObjComponentesIntegradores().contains((ComponenteDistribuidorIntegrador) objComponenteDistribuidor)){
                            ComponenteDistribuidorIntegrador objComponenteDistribuidorIntegrador = (ComponenteDistribuidorIntegrador) objComponenteDistribuidor;
                            UtilRepresentacion.objBibliotecaTrabajoLocal.add(objComponenteDistribuidorIntegrador);
                        }
                    }
                    else if(objComponenteDistribuidor instanceof ComponenteDistribuidorContenedor){
                        if(!UtilRepresentacion.objBibliotecaTrabajoLocal.getObjComponentesContenedores().contains((ComponenteDistribuidorContenedor) objComponenteDistribuidor)){
                            ComponenteDistribuidorContenedor objComponenteDistribuidorContenedor = (ComponenteDistribuidorContenedor) objComponenteDistribuidor;
                            UtilRepresentacion.objBibliotecaTrabajoLocal.add(objComponenteDistribuidorContenedor);
                        }
                    }
                }
                return true;
            }catch(java.lang.Exception ex){
                Logger.getLogger(GeneradorComponentes.class.getName()).log(Level.SEVERE, null, ex);
            }
            return false;
        }else{
            UtilRender.printlnConsole("Objeto componentes distribuidos incluidos Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
       return false;
    }
    
    /**
     * @DefinicionMetodo
     * @param objTempSwap 
@DefinicionParametro
@DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ComponenteDistribuidorContenedorLibre construirComponenteAsistenteLibre(ObjectTempSwapWizard objTempSwap){
      if(objTempSwap != null){
            try{            
                ArrayList<ComponenteDistribuidor> objIncluidos = (ArrayList<ComponenteDistribuidor>) objTempSwap.get(ObjectTempSwapWizard.COLECCION);            
                ComponenteBaseStandar objComponenteBase = GeneradorComponentes.getContenedorBase(0);
                ComponenteDistribuidorContenedorLibre objComponenteContenedorAsistenteLibre = 
                        GeneradorComponentes.crearComponenteContenedorAsistenteLibre(objComponenteBase);            
                objComponenteContenedorAsistenteLibre.setObjComponentes(objIncluidos);
                objComponenteContenedorAsistenteLibre.cargarPlantillasDesdeArchivoProperties(null);            
                initDistribucion(objComponenteContenedorAsistenteLibre);
                //GeneradorComponentes.setValorPropiedadString(objComponenteIntegradorMetodo, "Name", objReflexion.getStrNombre());
                return objComponenteContenedorAsistenteLibre;
            }catch(java.lang.Exception ex){
                Logger.getLogger(GeneradorComponentes.class.getName()).log(Level.SEVERE, null, ex);
            }
            return null;
        }else{
            UtilRender.printlnConsole("Objeto TempSwap Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
      return null;
    }
    
    /**
     * @DefinicionMetodo
@DefinicionParametro
     * @param objTempSwap 
@DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ComponenteDistribuidorIntegradorExtra construirComponenteIntegradorExtra(ObjectTempSwapWizard objTempSwap){
      if(objTempSwap != null){
        try{            
            ArrayList<ComponenteDistribuidor> objIncluidos = (ArrayList<ComponenteDistribuidor>) objTempSwap.get(ObjectTempSwapWizard.COLECCION);                        
            return construirComponenteIntegradorExtra(objIncluidos);
        }catch(java.lang.Exception ex){
            Logger.getLogger(GeneradorComponentes.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }else{
            UtilRender.printlnConsole("Objeto Temp swap Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
      return null;
    }
    
    /**
     * @DefinicionMetodo
     * @param objReflexion 
     * @param objReturn 
     * @param objComponentesGeneradoresParametros 
@DefinicionParametro
@DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ComponenteDistribuidorIntegradorMetodo construirComponenteIntegradorMetodo(ObjetoReflexion objReflexion, ComponenteDistribuidorGenerador objReturn, ArrayList<ComponenteDistribuidor> objComponentesGeneradoresParametros){
       if(objReflexion != null){
            try{
                ComponenteBaseStandar objComponenteBase = GeneradorComponentes.objPatronRepresentacionBase.getContenedorBaseMetodo();
                ComponenteDistribuidorIntegradorMetodo objComponenteIntegradorMetodo = 
                        GeneradorComponentes.crearComponenteIntegradorMetodo(objComponenteBase, objReflexion);                    
                objComponenteIntegradorMetodo.setObjComponenteReturn(objReturn);                              
                objComponenteIntegradorMetodo.setObjComponentesDistribuidores(objComponentesGeneradoresParametros);                       
                objComponenteIntegradorMetodo.cargarPlantillasDesdeArchivoProperties(null);                        
                initDistribucion(objComponenteIntegradorMetodo);
                objComponenteIntegradorMetodo.setStrTitulo(objReflexion.getStrNombre());
                //GeneradorComponentes.setValorPropiedadString(objComponenteIntegradorMetodo, "Name", objReflexion.getStrNombre());
                return objComponenteIntegradorMetodo;
            }catch(java.lang.Exception ex){
                Logger.getLogger(GeneradorComponentes.class.getName()).log(Level.SEVERE, null, ex);
            }
            return null;
        }else{
            UtilRender.printlnConsole("Objeto Reflexión Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
        return null;
    }
    
    /**
     * @DefinicionMetodo
     * @param objComponentesGeneradoresParametros 
@DefinicionParametro
@DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ComponenteDistribuidorIntegradorSimple construirComponenteIntegradorSimple(ArrayList<ComponenteDistribuidor> objComponentesGeneradoresParametros){
      if(objComponentesGeneradoresParametros != null){
        try{
            ComponenteBaseStandar objComponenteBase = GeneradorComponentes.objPatronRepresentacionBase.getContenedorBaseMetodo();
            ComponenteDistribuidorIntegradorSimple objComponenteIntegradorSimple = 
                    GeneradorComponentes.crearComponenteIntegradorSimple(objComponenteBase);                                
            objComponenteIntegradorSimple.setObjComponentesDistribuidores(objComponentesGeneradoresParametros);           
            objComponenteIntegradorSimple.cargarPlantillasDesdeArchivoProperties(null);            
            initDistribucion(objComponenteIntegradorSimple);
            //GeneradorComponentes.setValorPropiedadString(objComponenteIntegradorMetodo, "Name", objReflexion.getStrNombre());
            return objComponenteIntegradorSimple;
        }catch(java.lang.Exception ex){
            Logger.getLogger(GeneradorComponentes.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }else{
            UtilRender.printlnConsole("Objeto Tipo Dato Reflexión Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
      return null;
    }
    
    /**
     * @DefinicionMetodo
     * @param objComponentesDistribuidoresExtras 
@DefinicionParametro
@DefinicionParametro
     * @return @DefinicionReturn
     */
    public static ComponenteDistribuidorIntegradorExtra construirComponenteIntegradorExtra(ArrayList<ComponenteDistribuidor> objComponentesDistribuidoresExtras){
       if(objComponentesDistribuidoresExtras != null){
        try{
            ComponenteBaseStandar objComponenteBase = GeneradorComponentes.objPatronRepresentacionBase.getContenedorBaseMetodo();
            ComponenteDistribuidorIntegradorExtra objComponenteIntegradorExtra = 
                    GeneradorComponentes.crearComponenteIntegradorExtra(objComponenteBase);                                
            for(ComponenteDistribuidor objComponenteDistribuidor : objComponentesDistribuidoresExtras){
                objComponenteIntegradorExtra.getObjComponentesDistribuidores().add((ComponenteDistribuidorExtra) objComponenteDistribuidor);
            }            
            objComponenteIntegradorExtra.cargarPlantillasDesdeArchivoProperties(null);            
            initDistribucion(objComponenteIntegradorExtra);
            //GeneradorComponentes.setValorPropiedadString(objComponenteIntegradorMetodo, "Name", objReflexion.getStrNombre());
            return objComponenteIntegradorExtra;
        }catch(java.lang.Exception ex){
            Logger.getLogger(GeneradorComponentes.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }else{
            UtilRender.printlnConsole("Objeto Tipo Dato Reflexión Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
       return null;
    }
    
    /**
     * 
     * @param objComponentesDistribuidorObject
     * @return
     */
    public static ComponenteDistribuidorModeloAsociado construirComponenteModeloAsociado(ComponenteDistribuidor objComponentesDistribuidorObject){
      if(objComponentesDistribuidorObject != null){
        try{
            return construirComponenteModeloAsociado(objComponentesDistribuidorObject, null);
        }catch(java.lang.Exception ex){
            Logger.getLogger(GeneradorComponentes.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }else{
            UtilRender.printlnConsole("Objeto Tipo Dato Reflexión Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
      return null;
    }
    
    /**
     * 
     * @param objComponentesDistribuidorObject
     * @param objComponentesDistribuidorKey
     * @return
     */
    public static ComponenteDistribuidorModeloAsociado construirComponenteModeloAsociado(ComponenteDistribuidor objComponentesDistribuidorObject, ComponenteDistribuidor objComponentesDistribuidorKey){
      if(objComponentesDistribuidorObject != null){
        try{
            ComponenteBaseStandar objComponenteBase = GeneradorComponentes.objPatronRepresentacionBase.getContenedorModeloAsociado();
            ComponenteDistribuidorModeloAsociado objComponenteDistribuidorModeloAsociado = 
                    GeneradorComponentes.crearComponenteDistribuidorModeloAsociado(objComponenteBase);
            objComponenteDistribuidorModeloAsociado.setObjComponenteDistribuidorObject(objComponentesDistribuidorObject);            
            objComponenteDistribuidorModeloAsociado.setObjComponenteDistribuidorKey(objComponentesDistribuidorKey);
            objComponenteDistribuidorModeloAsociado.cargarPlantillasDesdeArchivoProperties(null);            
            //initDistribucion(objComponenteDistribuidorModeloAsociado);            
            return objComponenteDistribuidorModeloAsociado;
        }catch(java.lang.Exception ex){
            Logger.getLogger(GeneradorComponentes.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }else{
            UtilRender.printlnConsole("Objeto compoente distibuidor Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
      return null;
    }
    
    /**
     * 
     * @param objElementos
     * @return
     */
    public static ArrayList<ComponenteDistribuidorIntegrador> representarComponentesIntegradoresPorObjetosReflexion(ArrayList<ObjetoReflexion> objElementos){
        try{
            ArrayList<ComponenteDistribuidorIntegrador> objComponentesIntegradores = new ArrayList<ComponenteDistribuidorIntegrador>();
            for(ObjetoReflexion objReflexion : objElementos){
                //Se evalua el Tipo de Objeto
                if(objReflexion.getObj() instanceof Method){
                    Method objMetodo = (Method) objReflexion.getObj();                
                    ComponenteDistribuidorIntegradorMetodo objComponenteIntegradorMetodo = 
                            representacionComponenteIntegradorPorMetodo(objReflexion, objMetodo);
                    objComponentesIntegradores.add(objComponenteIntegradorMetodo);                    
                }            
            }
            return objComponentesIntegradores;
        }catch(java.lang.NullPointerException ex){}
        return null;
    }
    
    /**
     * 
     * @param objReflexion
     * @param objMetodo
     * @return
     */
    public static ComponenteDistribuidorIntegradorMetodo representacionComponenteIntegradorPorMetodo(ObjetoReflexion objReflexion, Method objMetodo){
        if(objReflexion != null){
            ArrayList<ObjetoTipoDatoReflexion> objTipoDatoParametros = new ArrayList<ObjetoTipoDatoReflexion>();
            ObjetoTipoDatoReflexion objTipoDatoReturn = null;  
            String[] params             = devolverNombresParametroMetodo(objMetodo);
            String[] nombres            = devolverParametrosFormateados(params);
            Class<?>[] objParametros    = objMetodo.getParameterTypes();

            for(Class<?> objParametro : objParametros){
                ObjetoTipoDatoReflexion objTipoDatoParametro = GeneradorComponentes.devolverTipoDatoReflexionPorClass(objParametro);
                objTipoDatoParametros.add(objTipoDatoParametro);
            }     

            ComponenteDistribuidorGenerador objComponenteGeneradorReturn = null;
            Class<?> objReturn          = objMetodo.getReturnType();
            if(!objReturn.getSimpleName().equalsIgnoreCase("void")){            
                //se obtienen los objetos tipo dato reflexion
                objTipoDatoReturn           = GeneradorComponentes.devolverTipoDatoReflexionPorClass(objReturn);        
                //Obtener la Representación para el Valor de Retorno            
                if(objTipoDatoReturn.getObjCaso().geteCaso() == TipoCaso.eClaseMundo){
                    objComponenteGeneradorReturn = GeneradorComponentes.generarRepresentacionPorTipoDato(objTipoDatoReturn, true, false);
                }
                else{
                    objComponenteGeneradorReturn = GeneradorComponentes.generarRepresentacionPorTipoDato(objTipoDatoReturn, false, false);
                }

                if(objComponenteGeneradorReturn != null){
                    formatearNombresComponenteGenerador(objComponenteGeneradorReturn, "ValorReturn", "Retorno del Método");
                    objComponenteGeneradorReturn.setStrLabelTitle("Retorno del Método");
                    objComponenteGeneradorReturn.setStrLabelName("ValorReturn");
                }        
            }

            ArrayList<ComponenteDistribuidor> objComponentesGeneradoresParametros = new ArrayList<ComponenteDistribuidor>();
            int i = 0;
            for(ObjetoTipoDatoReflexion objTipoDatoParametro : objTipoDatoParametros){
                ComponenteDistribuidorGenerador objComponenteGeneradorParametro = null;
                if(objTipoDatoParametro.getObjCaso().geteCaso() == TipoCaso.eClaseMundo){
                    objComponenteGeneradorParametro = GeneradorComponentes.generarRepresentacionPorTipoDato(objTipoDatoParametro, true, true);
                }
                else{
                    objComponenteGeneradorParametro = GeneradorComponentes.generarRepresentacionPorTipoDato(objTipoDatoParametro, false, true);
                }
                if(objComponenteGeneradorParametro != null){
                    String strParametro = Utileria.getKamelCaseCapital(params[i]);
                    GeneradorComponentes.formatearNombreComponente(objComponenteGeneradorParametro, strParametro, objTipoDatoParametro.getStrNombre());
                    formatearNombresComponenteGenerador(objComponenteGeneradorParametro, params[i], nombres[i]);
                    objComponenteGeneradorParametro.setStrLabelTitle(nombres[i]);
                    objComponenteGeneradorParametro.setStrLabelName(strParametro);
                    objComponentesGeneradoresParametros.add(objComponenteGeneradorParametro);                        
                }                        
                i++;
            }                 
            ComponenteDistribuidorIntegradorMetodo objComponenteIntegradorMetodo = 
                    GeneradorComponentes.construirComponenteIntegradorMetodo(objReflexion, objComponenteGeneradorReturn, objComponentesGeneradoresParametros);                           
            return objComponenteIntegradorMetodo;
        }else{
            UtilRender.printlnConsole("Objeto  Reflexión Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
        return null;
    }
    
    /**
     * 
     * @param objComponenteGenerador
     * @param strParametro
     * @param strNombreFormateado
     */
    public static void formatearNombresComponenteGenerador(ComponenteDistribuidorGenerador objComponenteGenerador, String strParametro, String strNombreFormateado){
        if(objComponenteGenerador != null){
            ObjetoTipoDatoReflexion objTipoDato = objComponenteGenerador.getObjTipoDato();
            if(objComponenteGenerador instanceof ComponenteDistribuidorGeneradorUnitario){
                ComponenteDistribuidorGeneradorUnitario objComponenteDistribuidorGeneradorUnitario = (ComponenteDistribuidorGeneradorUnitario) objComponenteGenerador;
                //se obtiene la cadena del nombre del parametro en la posicion            
                ComponenteGeneradoInterno objComponenteGeneradoInterno = objComponenteDistribuidorGeneradorUnitario.getObjComponenteGenerador();
                if(representacionConAcompanante(objComponenteGeneradoInterno.getObjClassSwing().getSimpleName())){
                    ComponenteGeneradoSimple objComponenteGeneradoSimple = objComponenteDistribuidorGeneradorUnitario.getObjComponentesGenerados().get(0);
                    Propiedad objPropiedad = GeneradorComponentes.getObjPropiedad(objComponenteGeneradoSimple, "Text");
                    ParametroPropiedad objParametro = objPropiedad.getObjParametroDefault(Propiedad.MODO_SET);
                    objParametro.setStrValue(strNombreFormateado);

                    strParametro = Utileria.getKamelCase(strParametro, true);
                    formatearNombreComponente(objComponenteGeneradoSimple, strParametro, "Generado");
                    formatearNombreComponente(objComponenteGeneradoInterno, strParametro, "Interno");

                    objComponenteGeneradoInterno.setNameTipoDato(strParametro);
                    if(objTipoDato.getObjCaso().geteCaso() == TipoCaso.ePrimitivo){
                        objComponenteGeneradoInterno.setSimpleNameTipoDato(objTipoDato.getStrNombre());
                        objComponenteGeneradoInterno.setCanonicalNameTipoDato(objTipoDato.getStrClassPath());
                    }
                    else{
                        objComponenteGeneradoInterno.setSimpleNameTipoDato(objTipoDato.getObjClass().getSimpleName());
                        objComponenteGeneradoInterno.setCanonicalNameTipoDato(objTipoDato.getObjClass().getCanonicalName());
                    }
                }
                else if(representacionSinAcompanante(objComponenteGeneradoInterno.getObjClassSwing().getSimpleName())){                
                    Propiedad objPropiedad = GeneradorComponentes.getObjPropiedad(objComponenteGeneradoInterno, "Text");
                    ParametroPropiedad objParametro = objPropiedad.getObjParametroDefault(Propiedad.MODO_SET);
                    objParametro.setStrValue(strNombreFormateado);

                    strParametro = Utileria.getKamelCase(strParametro, true);                
                    formatearNombreComponente(objComponenteGeneradoInterno, strParametro, "Interno");                

                    objComponenteGeneradoInterno.setNameTipoDato(strParametro);
                    objComponenteGeneradoInterno.setSimpleNameTipoDato(objTipoDato.getObjClass().getSimpleName());
                    objComponenteGeneradoInterno.setCanonicalNameTipoDato(objTipoDato.getObjClass().getCanonicalName());
                }
            }
            else if(objComponenteGenerador instanceof ComponenteDistribuidorGeneradorEnum){
                ComponenteDistribuidorGeneradorEnum objComponenteDistribuidorGeneradorEnum = (ComponenteDistribuidorGeneradorEnum) objComponenteGenerador;
                //se obtiene la cadena del nombre del parametro en la posicion            
                ComponenteGeneradoInterno objComponenteGeneradoInterno = objComponenteDistribuidorGeneradorEnum.getObjComponenteGenerador();
                if(representacionConAcompanante(objComponenteGeneradoInterno.getObjClassSwing().getSimpleName())){
                    ComponenteGeneradoSimple objComponenteGeneradoSimple = objComponenteDistribuidorGeneradorEnum.getObjComponentesGenerados().get(0);
                    Propiedad objPropiedad = GeneradorComponentes.getObjPropiedad(objComponenteGeneradoSimple, "Text");
                    ParametroPropiedad objParametro = objPropiedad.getObjParametroDefault(Propiedad.MODO_SET);
                    objParametro.setStrValue(strNombreFormateado);

                    strParametro = Utileria.getKamelCase(strParametro, true);
                    formatearNombreComponente(objComponenteGeneradoSimple, strParametro, "Generado");
                    formatearNombreComponente(objComponenteGeneradoInterno, strParametro, "Interno");

                    objComponenteGeneradoInterno.setNameTipoDato(strParametro);
                    if(objTipoDato.getObjCaso().geteCaso() == TipoCaso.ePrimitivo){
                        objComponenteGeneradoInterno.setSimpleNameTipoDato(objTipoDato.getStrNombre());
                        objComponenteGeneradoInterno.setCanonicalNameTipoDato(objTipoDato.getStrClassPath());
                    }
                    else{
                        objComponenteGeneradoInterno.setSimpleNameTipoDato(objTipoDato.getObjClass().getSimpleName());
                        objComponenteGeneradoInterno.setCanonicalNameTipoDato(objTipoDato.getObjClass().getCanonicalName());
                    }
                }
                else if(representacionSinAcompanante(objComponenteGeneradoInterno.getObjClassSwing().getSimpleName())){                
                    Propiedad objPropiedad = GeneradorComponentes.getObjPropiedad(objComponenteGeneradoInterno, "Text");
                    ParametroPropiedad objParametro = objPropiedad.getObjParametroDefault(Propiedad.MODO_SET);
                    objParametro.setStrValue(strNombreFormateado);

                    strParametro = Utileria.getKamelCase(strParametro, true);                
                    formatearNombreComponente(objComponenteGeneradoInterno, strParametro, "Interno");                

                    objComponenteGeneradoInterno.setNameTipoDato(strParametro);
                    objComponenteGeneradoInterno.setSimpleNameTipoDato(objTipoDato.getObjClass().getSimpleName());
                    objComponenteGeneradoInterno.setCanonicalNameTipoDato(objTipoDato.getObjClass().getCanonicalName());
                }
            }
            else if(objComponenteGenerador instanceof ComponenteDistribuidorGeneradorVinculador){
                ComponenteDistribuidorGeneradorVinculador objComponenteDistribuidorGeneradorVinculador = (ComponenteDistribuidorGeneradorVinculador) objComponenteGenerador;
                //se obtiene la cadena del nombre del parametro en la posicion            
                ComponenteGeneradoInterno objComponenteGeneradoInterno = objComponenteDistribuidorGeneradorVinculador.getObjComponenteGenerador();
                if(representacionConAcompanante(objComponenteGeneradoInterno.getObjClassSwing().getSimpleName())){
                    ComponenteGeneradoSimple objComponenteGeneradoSimple = objComponenteDistribuidorGeneradorVinculador.getObjComponentesGenerados().get(0);
                    Propiedad objPropiedad = GeneradorComponentes.getObjPropiedad(objComponenteGeneradoSimple, "Text");
                    ParametroPropiedad objParametro = objPropiedad.getObjParametroDefault(Propiedad.MODO_SET);
                    objParametro.setStrValue(strNombreFormateado);

                    strParametro = Utileria.getKamelCase(strParametro, true);
                    formatearNombreComponente(objComponenteGeneradoSimple, strParametro, "Generado");
                    formatearNombreComponente(objComponenteGeneradoInterno, strParametro, "Interno");

                    objComponenteGeneradoInterno.setNameTipoDato(strParametro);
                    if(objTipoDato.getObjCaso().geteCaso() == TipoCaso.ePrimitivo){
                        objComponenteGeneradoInterno.setSimpleNameTipoDato(objTipoDato.getStrNombre());
                        objComponenteGeneradoInterno.setCanonicalNameTipoDato(objTipoDato.getStrClassPath());
                    }
                    else{
                        objComponenteGeneradoInterno.setSimpleNameTipoDato(objTipoDato.getObjClass().getSimpleName());
                        objComponenteGeneradoInterno.setCanonicalNameTipoDato(objTipoDato.getObjClass().getCanonicalName());
                    }
                }
                else if(representacionSinAcompanante(objComponenteGeneradoInterno.getObjClassSwing().getSimpleName())){                
                    Propiedad objPropiedad = GeneradorComponentes.getObjPropiedad(objComponenteGeneradoInterno, "Text");
                    ParametroPropiedad objParametro = objPropiedad.getObjParametroDefault(Propiedad.MODO_SET);
                    objParametro.setStrValue(strNombreFormateado);

                    strParametro = Utileria.getKamelCase(strParametro, true);                
                    formatearNombreComponente(objComponenteGeneradoInterno, strParametro, "Interno");                

                    objComponenteGeneradoInterno.setNameTipoDato(strParametro);
                    objComponenteGeneradoInterno.setSimpleNameTipoDato(objTipoDato.getObjClass().getSimpleName());
                    objComponenteGeneradoInterno.setCanonicalNameTipoDato(objTipoDato.getObjClass().getCanonicalName());
                }
            }
            else if(objComponenteGenerador instanceof ComponenteDistribuidorGeneradorString){
                ComponenteDistribuidorGeneradorString objComponenteDistribuidorGeneradorString = (ComponenteDistribuidorGeneradorString) objComponenteGenerador;
                //se obtiene la cadena del nombre del parametro en la posicion            
                ComponenteGeneradoInterno objComponenteGeneradoInterno = objComponenteDistribuidorGeneradorString.getObjComponenteGenerador();
                if(representacionConAcompanante(objComponenteGeneradoInterno.getObjClassSwing().getSimpleName())){
                    ComponenteGeneradoSimple objComponenteGeneradoSimple = objComponenteDistribuidorGeneradorString.getObjComponentesGenerados().get(0);
                    Propiedad objPropiedad = GeneradorComponentes.getObjPropiedad(objComponenteGeneradoSimple, "Text");
                    ParametroPropiedad objParametro = objPropiedad.getObjParametroDefault(Propiedad.MODO_SET);
                    objParametro.setStrValue(strNombreFormateado);

                    strParametro = Utileria.getKamelCase(strParametro, true);
                    formatearNombreComponente(objComponenteGeneradoSimple, strParametro, "Generado");
                    formatearNombreComponente(objComponenteGeneradoInterno, strParametro, "Interno");

                    objComponenteGeneradoInterno.setNameTipoDato(strParametro);
                    if(objTipoDato.getObjCaso().geteCaso() == TipoCaso.ePrimitivo){
                        objComponenteGeneradoInterno.setSimpleNameTipoDato(objTipoDato.getStrNombre());
                        objComponenteGeneradoInterno.setCanonicalNameTipoDato(objTipoDato.getStrClassPath());
                    }
                    else{
                        objComponenteGeneradoInterno.setSimpleNameTipoDato(objTipoDato.getObjClass().getSimpleName());
                        objComponenteGeneradoInterno.setCanonicalNameTipoDato(objTipoDato.getObjClass().getCanonicalName());
                    }
                }
                else if(representacionSinAcompanante(objComponenteGeneradoInterno.getObjClassSwing().getSimpleName())){                
                    Propiedad objPropiedad = GeneradorComponentes.getObjPropiedad(objComponenteGeneradoInterno, "Text");
                    ParametroPropiedad objParametro = objPropiedad.getObjParametroDefault(Propiedad.MODO_SET);
                    objParametro.setStrValue(strNombreFormateado);

                    strParametro = Utileria.getKamelCase(strParametro, true);                
                    formatearNombreComponente(objComponenteGeneradoInterno, strParametro, "Interno");                

                    objComponenteGeneradoInterno.setNameTipoDato(strParametro);
                    objComponenteGeneradoInterno.setSimpleNameTipoDato(objTipoDato.getObjClass().getSimpleName());
                    objComponenteGeneradoInterno.setCanonicalNameTipoDato(objTipoDato.getObjClass().getCanonicalName());
                }
            }
        }else{
            UtilRender.printlnConsole("Objeto Componente Generador Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
    }
    
    /**
     * 
     * @param strSimpleName
     * @return
     */
    public static boolean representacionConAcompanante(String strSimpleName){
        try{
            return GeneradorComponentes.objNombresConAcompanantes.contains(strSimpleName);
        }catch(java.lang.NullPointerException ex){}
        return false;
    }
    
    /**
     * 
     * @param strSimpleName
     * @return
     */
    public static boolean representacionSinAcompanante(String strSimpleName){
        try{
            return GeneradorComponentes.objNombresSinAcompanantes.contains(strSimpleName);
        }catch(java.lang.NullPointerException ex){}
        return false;
    }
    
    /**
     * 
     * @param strSimpleName
     * @return
     */
    public static boolean representacionNoAplicaAcompanante(String strSimpleName){
        try{
            return GeneradorComponentes.objNombresNoAplicaAcompanantes.contains(strSimpleName);
        }catch(java.lang.NullPointerException ex){}
        return false;
    }
    
    /**
     * 
     * @param strSimpleName
     * @return
     */
    public static boolean esAliasMetodoSetter(String strSimpleName){
        try{
            return GeneradorComponentes.objAliasMetodosSetter.contains(strSimpleName);
        }catch(java.lang.NullPointerException ex){}
        return false;
    }
    
    /**
     * 
     * @param strSimpleName
     * @return
     */
    public static boolean esAliasMetodoGetter(String strSimpleName){
        try{
            return GeneradorComponentes.objAliasMetodosGetter.contains(strSimpleName);
        }catch(java.lang.NullPointerException ex){}
        return false;
    }
    
    /**
     * 
     * @param strSimpleName
     * @return
     */
    public static boolean esAliasMetodoIs(String strSimpleName){
        try{
            return GeneradorComponentes.objAliasMetodosIs.contains(strSimpleName);
        }catch(java.lang.NullPointerException ex){}
        return false;
    }
    
    /**
     * 
     * @param objComponente
     * @param strNombre
     * @param targetNombre
     */
    public static void formatearNombreComponente(Componente objComponente, String strNombre, String targetNombre){
        try{
            String strNombreComponente = objComponente.getName();
            if(objComponente instanceof ComponenteDistribuidorGenerador){
                ComponenteDistribuidorGenerador objComponenteDistribuidorGenerador = (ComponenteDistribuidorGenerador) objComponente;
                ObjetoTipoDatoReflexion objTipoDato = objComponenteDistribuidorGenerador.getObjTipoDato();
                if(objTipoDato.getObjCaso().geteCaso() == TipoCaso.ePrimitivo){
                    targetNombre = Utileria.getKamelCaseCapital(targetNombre);
                }            
            }        
            strNombreComponente = strNombreComponente.replaceAll(targetNombre, strNombre);
            GeneradorComponentes.setValorPropiedadString(objComponente, "Name", strNombreComponente);
        }catch(java.lang.NullPointerException ex){}        
    }
            
    /**
     * @DefinicionMetodo
     * @param objClass @DefinicionParametro
     * @return @DefinicionReturn
     */
    public static BibliotecaTrabajo devolverBibliotecaPorClass(Class objClass){
        try{
            if(UtilRepresentacion.objBibliotecaTrabajoLocal.existeComponenteGeneradorPorClass(objClass)){
                return UtilRepresentacion.objBibliotecaTrabajoLocal;
            }
            else if(UtilRepresentacion.objBibliotecaTrabajoGlobal.existeComponenteGeneradorPorClass(objClass)){
                return UtilRepresentacion.objBibliotecaTrabajoGlobal;
            }
        }catch(java.lang.NullPointerException ex){}
        return null;
    }
        
    /**
     * 
     * @param strClassPathClassParent
     * @param strClassPathPropiedad
     * @param method
     * @return
     */
    public static ObjetoReflexion crearObjetoReflexionProperties(String strClassPathClassParent, String strClassPathPropiedad, boolean method){
        if(method){
            if(Utileria.esPosibleInstanciar(strClassPathClassParent)){                
                try {
                    Class objClass = Class.forName(strClassPathClassParent);
                    for(Method objMethod : objClass.getMethods()){
                        if(objMethod.toGenericString().equals(strClassPathPropiedad)){
                            ObjetoReflexion obj = new ObjetoReflexion(objMethod);
                            return obj;
                        }
                    }
                    System.out.println("No Existe el Método: " + strClassPathPropiedad + " en la Clase Analizada.");
                } catch (ClassNotFoundException ex) {
                    Logger.getLogger(GeneradorComponentes.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
            else{
                System.out.println("No Existe la Clase: " + strClassPathClassParent + " en el Modelo Analizado.");
            }
            return null;
        }
        else{
            System.out.println("No Implementado el Soporte par los Atributos.");
        }
        return null;
    }
    
    /**
     * 
     * @param strParametro
     * @param objClass
     * @return
     */
    public static ObjetoReflexion crearObjetoReflexionParametroConstructor(String strParametro, Class<?> objClass){
        ObjetoReflexion obj = new ObjetoReflexion(objClass);
        obj.setStrNombre(strParametro);
        return obj;
    }
    
    /**
     * 
     * @param objConstructor
     * @return
     */
    public static ArrayList<ObjetoReflexion> crearRepresentacionReflexionParametrosConstructor(Constructor objConstructor){
        if(objConstructor != null){
            ArrayList<ObjetoReflexion> objParametrosReflexion = new ArrayList<ObjetoReflexion>();
            String[] strParametros = GeneradorComponentes.devolverNombresParametroConstructor(objConstructor);
            int i=0;
            for(Class<?> objParametro : objConstructor.getParameterTypes()){
                ObjetoReflexion objParametroReflexion = crearObjetoReflexionParametroConstructor(strParametros[i], objParametro);
                objParametrosReflexion.add(objParametroReflexion);
                i++;
            }
            return objParametrosReflexion;
        }else{
            UtilRender.printlnConsole("Objeto constructor Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
        return null;
    }
    
    /**
     * 
     * @param objComponentes
     * @param modo
     * @return
     */
    public static boolean existeTipoComponenteEnColeccion(ArrayList<ComponenteDistribuidor> objComponentes, int modo){
        if(objComponentes != null){
            for(Componente objComponente : objComponentes){
                switch(modo){                
                    case Componente.COMPONENTE_DISTRIBUIDOR_EXTRA:
                        if(objComponente instanceof ComponenteDistribuidorExtra){
                            return true;
                        }
                        break;
                    case Componente.COMPONENTE_DISTRIBUIDOR_GENERADOR:
                        if(objComponente instanceof ComponenteDistribuidorGenerador){
                            return true;
                        }
                        break;
                    case Componente.COMPONENTE_DISTRIBUIDOR_INTEGRADOR:
                        if(objComponente instanceof ComponenteDistribuidorIntegrador){
                            return true;
                        }
                        break;
                }
            }
        }else{
            UtilRender.printlnConsole("Objeto Componentes Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
        return false;
    }
    
    /**
     * 
     * @param objTipoColeccionModeloAsociado
     * @param objComponenteParent
     * @param objComponenteObject
     * @param modo
     * @return
     */
    public static ModeloAsociado crearModeloAsociado(TipoColeccionModeloAsociado objTipoColeccionModeloAsociado, ComponenteDistribuidor objComponenteParent, ComponenteDistribuidor objComponenteObject, int modo){                
        if(objTipoColeccionModeloAsociado != null){
            ComponenteDistribuidorModeloAsociado objComponenteDistribuidorModeloAsociado = GeneradorComponentes.construirComponenteModeloAsociado(objComponenteObject);
            ModeloAsociado objModeloAsociado = new ModeloAsociado(objTipoColeccionModeloAsociado, objComponenteParent, modo);
            objModeloAsociado.setObjComponenteDistribuidorModeloAsociado(objComponenteDistribuidorModeloAsociado);
            return objModeloAsociado;
        }else{
            UtilRender.printlnConsole("Objeto Tipo Coleccion Modelo asociado Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
        return null;
    }
    
    /**
     * 
     * @param objTipoColeccionModeloAsociado
     * @param objComponenteParent
     * @param objComponenteObject
     * @param objComponenteKey
     * @param modo
     * @return
     */
    public static ModeloAsociado crearModeloAsociado(TipoColeccionModeloAsociado objTipoColeccionModeloAsociado, ComponenteDistribuidor objComponenteParent, ComponenteDistribuidor objComponenteObject, ComponenteDistribuidor objComponenteKey, int modo){
        if(objTipoColeccionModeloAsociado != null){
            ComponenteDistribuidorModeloAsociado objComponenteDistribuidorModeloAsociado = GeneradorComponentes.construirComponenteModeloAsociado(objComponenteObject, objComponenteKey);
            ModeloAsociado objModeloAsociado = new ModeloAsociado(objTipoColeccionModeloAsociado, objComponenteParent, modo);
            objComponenteDistribuidorModeloAsociado.setObjModeloAsociadoParent(objModeloAsociado);
            objModeloAsociado.setObjComponenteDistribuidorModeloAsociado(objComponenteDistribuidorModeloAsociado);
            return objModeloAsociado;
        }else{
            UtilRender.printlnConsole("Objeto Tipo Coleccion modelo asociado Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
        return null;
    }
    
    /**
     * Crea un <code>ComponenteBeans</code> para un <code>ComponenteDistribuidor</code>.
     * @param objComponenteDistribuidor <code>ComponenteDistribuidor</code>
     * @return <code>ComponenteBeans</code>
     * @deprecated <code>ComponenteBeans</code> no ha sido incluido en la versión final.
     */
    public static ComponenteBeans crearComponenteBeans(ComponenteDistribuidor objComponenteDistribuidor){        
        if(objComponenteDistribuidor instanceof ComponenteDistribuidorExtra){
            return crearComponenteBeans((ComponenteDistribuidorExtra)objComponenteDistribuidor);
        }
        else if(objComponenteDistribuidor instanceof ComponenteDistribuidorIntegradorExtra){
            return crearComponenteBeans((ComponenteDistribuidorIntegradorExtra)objComponenteDistribuidor);
        }
        return null;
    }
    
    /**
     * Crea un <code>ComponenteBeans</code> para el <code>ModeloAsociado</code>.
     * @param objModeloAsociado Modelo Asociado.
     * @return ComponenteBeans
     * @deprecated <code>ComponenteBeans</code> no ha sido incluido en la versión final.
     */
    public static ComponenteBeans crearComponenteBeans(ModeloAsociado objModeloAsociado){
        if(objModeloAsociado != null){
            ComponenteDistribuidor objComponenteDistribuidor = objModeloAsociado.getObjComponenteParent();        
            return crearComponenteBeans(objComponenteDistribuidor);
        }else{
            UtilRender.printlnConsole("Objeto MOdeloa Asociado Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
        return null;
    }
    
    /**
     * Crea un <code>ComponenteBeans</code> para el <code>ComponenteDistribuidorIntegradorExtra</code>.
     * @param objComponenteIntegradorExtra Componente Integrador Extra.
     * @return <code>ComponenteBeans</code> que representa el <code>ComponenteDistribuidorIntegradorExtra</code>
     * @deprecated ComponenteDistribuidorIntegradorExtra no ha sido incluido en la versión final.
     */
    public static ComponenteBeans crearComponenteBeans(ComponenteDistribuidorIntegradorExtra objComponenteIntegradorExtra){
        if(objComponenteIntegradorExtra != null){
            if(UtilRepresentacion.objBibliotecaTrabajoLocal.existeComponenteBeansPorCD(objComponenteIntegradorExtra)){
                return UtilRepresentacion.objBibliotecaTrabajoLocal.buscarComponenteBeans(objComponenteIntegradorExtra);
            }
            ComponenteBeans objComponenteBeans = new ComponenteBeans(objComponenteIntegradorExtra);
            for(Componente objComponente : objComponenteIntegradorExtra.getComponentesDistribuidos()){
                if(objComponente instanceof ComponenteDistribuidorExtra){
                    ComponenteDistribuidorExtra objComponenteExtra = (ComponenteDistribuidorExtra) objComponente;
                    //Se evalua el control representado
                    if(objComponenteExtra.isIntoCasoColeccion()){
                        //Se busca en la biblioteca la existencia de una posible representación previa
                        ComponenteBeans objComponenteBeansInterno =
                                crearComponenteBeans(objComponenteExtra.getObjModeloAsociado());                    
                        if(objComponenteBeansInterno != null){
                            objComponenteBeans.add(objComponenteBeansInterno);
                        }
                    }
                    else{
                        //Se busca la Propiedad Beans del Componente
                        PropiedadBase objPropiedadBase = devolverPropiedad(objComponenteExtra);
                        PropiedadBeans objPropiedadBeans = new PropiedadBeans(objComponenteExtra, objPropiedadBase);
                        objComponenteBeans.add(objPropiedadBeans);
                    }                                       
                }
                else if(objComponente instanceof ComponenteDistribuidorIntegradorExtra){
                    ComponenteDistribuidorIntegradorExtra objComponenteIntegradorExtraInterno = (ComponenteDistribuidorIntegradorExtra) objComponente;
                    ComponenteBeans objComponenteBeansInterno =
                        crearComponenteBeans(objComponenteIntegradorExtraInterno);                    
                    if(objComponenteBeansInterno != null){
                        objComponenteBeans.add(objComponenteBeansInterno);
                    }                       
                }
            }
            return objComponenteBeans;
        }else{
            UtilRender.printlnConsole("Objeto componente integrador extra Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
        return null;
    }
    
    /**
     * Crear un Componente Beans que representa el tipo de dato de la Propiedad Base del Componente Extra.
     * @param objComponenteExtra Compon
     * @return Componente Beans que representa el tipo de dato de la Propiedad Base del Componente Extra.
     * @deprecated ComponenteDistribuidorExtra no ha sido incluido en la versión final.
     */
    public static ComponenteBeans crearComponenteBeans(ComponenteDistribuidorExtra objComponenteExtra){
       if(objComponenteExtra != null){
            if(UtilRepresentacion.objBibliotecaTrabajoLocal.existeComponenteBeansPorCD(objComponenteExtra)){
                return UtilRepresentacion.objBibliotecaTrabajoLocal.buscarComponenteBeans(objComponenteExtra);
            }
            ComponenteBeans objComponenteBeans = new ComponenteBeans(objComponenteExtra);
            //Se evalua el control representado
            if(objComponenteExtra.isIntoCasoColeccion()){
                //Se crea el Beans
                ComponenteBeans objComponenteBeansInterno =
                        crearComponenteBeans(objComponenteExtra.getObjModeloAsociado());                    
                if(objComponenteBeansInterno != null){
                    objComponenteBeans.add(objComponenteBeansInterno);
                }
            }
            else{
                //Se busca la Propiedad Beans del Componente
                PropiedadBase objPropiedadBase = devolverPropiedad(objComponenteExtra);
                PropiedadBeans objPropiedadBeans = new PropiedadBeans(objComponenteExtra, objPropiedadBase);            
                objComponenteBeans.add(objPropiedadBeans);
            }
            return objComponenteBeans;
        }else{
            UtilRender.printlnConsole("Objeto componente extra Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
        return null;
    }
    
    /**
     * Devuelve la Propiedad Base del Componente Actual.
     * @param objComponenteExtra Compoentne Actual por el cual se devolverá la Propiedad Base asociada.
     * @return Propiedad Base del Componente Actual.
     * @deprecated ComponenteDistribuidorExtra no ha sido incluido en la versión final.
     */
    public static PropiedadBase devolverPropiedad(ComponenteDistribuidorExtra objComponenteExtra){
        if(objComponenteExtra != null){
            ComponenteGeneradoInterno objComponenteGeneradoInterno = objComponenteExtra.getObjComponenteGenerador();
            return objComponenteGeneradoInterno.getObjPropiedadBase();
        }else{
            UtilRender.printlnConsole("Objeto Componente extra Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
        return null;
    }
    
    /**
     * Determina si el Tipo de Dato representa una Colección.
     * @param objTipoDatoModeloAnalizado
     * @return Tipo de Dato representa una Colección.
     */
    public static boolean isCollectionObject(ObjetoTipoDatoReflexion objTipoDatoModeloAnalizado){
        if(objTipoDatoModeloAnalizado != null){
            TipoDatoRepresentacionBase objTipoDatoRepresentacionBase = GeneradorComponentes.devolverTipoDatoRepresentacionBasePorTipoDato(objTipoDatoModeloAnalizado);
            return objTipoDatoRepresentacionBase.isCollectionObject();
        }else{
            UtilRender.printlnConsole("Objeto Tipo Dato modelo analizado Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
        return false;
    }
    
    /**
     * Devuelve el Componente Generador del Compoentne Actual.
     * @param objComponente Componente que devolvera su Generador.
     * @return Componente Generador del Compoentne Actual.
     */
    public static ComponenteBase devolverComponenteBaseGenerador(Componente objComponente){        
        if(objComponente instanceof ComponenteDistribuidorGeneradorUnitario){
            ComponenteDistribuidorGeneradorUnitario objComponenteGeneradorUnitario = (ComponenteDistribuidorGeneradorUnitario) objComponente;
            return objComponenteGeneradorUnitario.getObjComponenteGenerador().getObjComponenteBase();
        }
        else if(objComponente instanceof ComponenteDistribuidorGeneradorString){
            ComponenteDistribuidorGeneradorString objComponenteGeneradorString = (ComponenteDistribuidorGeneradorString) objComponente;
            return objComponenteGeneradorString.getObjComponenteGenerador().getObjComponenteBase();
        }
        else if(objComponente instanceof ComponenteDistribuidorExtra){
            ComponenteDistribuidorExtra objComponenteDistribuidorExtra = (ComponenteDistribuidorExtra) objComponente;
            return objComponenteDistribuidorExtra.getObjComponenteGenerador().getObjComponenteBase();
        }
        return null;
    }
    
    /**
     * Devuelve el Tipo de Representación del Modelo Asociado si aplica.
     * @param objTipoDatoModeloAnalizado Tipo de Dato por el cual se analizará la Representación.
     * @return Tipo de Representación del Modelo Asociado si aplica.
     */
    public static int devolverTipoRepresentacionModeloAsociado(ObjetoTipoDatoReflexion objTipoDatoModeloAnalizado){
        if(objTipoDatoModeloAnalizado != null){
               if(objTipoDatoModeloAnalizado.getObjCaso().isCollection()){
                    return ModeloAsociado.MODO_COLLECTION;
                }
                else if(objTipoDatoModeloAnalizado.getObjCaso().isArray()){
                    return ModeloAsociado.MODO_ARRAY;
                }
                return ModeloAsociado.MODO_INDEFINIDO;
        }else{
            UtilRender.printlnConsole("Objeto Tipo Dato Reflexión Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
        return -1;
    }
    
    /**
     * Devuelve el Tipo de Colección de la Clase actual o null si no Aplica.
     * @param objClass Clase que se analizará el Tipo de Colección.
     * @return Tipo de Colección de la Clase actual o null si no Aplica.
     */
    public static TipoColeccionModeloAsociado devolverTipoColeccionModeloAsociado(Class<?> objClass){
       if(objClass != null){
            try {    
                if(objClass.newInstance() instanceof AbstractList){
                    return TipoColeccionModeloAsociado.eAbstractList;
                }
                else if(objClass.newInstance() instanceof AbstractSequentialList){
                    return TipoColeccionModeloAsociado.eAbstractList;
                }
                else if(objClass.newInstance() instanceof AbstractMap){
                    return TipoColeccionModeloAsociado.eAbstractMap;
                }
                else if(objClass.newInstance() instanceof AbstractSet){
                    return TipoColeccionModeloAsociado.eAbstractSet;
                }
                else if(objClass.newInstance() instanceof AbstractQueue){
                    return TipoColeccionModeloAsociado.eAbstractQueue;
                }            
                else if(objClass.newInstance() instanceof JList){
                    return TipoColeccionModeloAsociado.eAbstractList;
                }
                else if(objClass.newInstance() instanceof JTable){
                    return TipoColeccionModeloAsociado.eAbstractList;
                }
                else if(objClass.newInstance() instanceof JTree){
                    return TipoColeccionModeloAsociado.eAbstractList;
                }
            } catch (InstantiationException ex) {
                Logger.getLogger(GeneradorComponentes.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                Logger.getLogger(GeneradorComponentes.class.getName()).log(Level.SEVERE, null, ex);}
            return TipoColeccionModeloAsociado.eDesconocido;
    }else{
            UtilRender.printlnConsole("Objeto Tipo Dato Reflexión Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
       return null;
    }
    
    /**
     * Inicializa la Distribución por Defecto del <code>ComponenteDsitribuidor</code>.
     * @param objComponenteDistribuidor <code>ComponenteDsitribuidor</code> que se inicializará.
     */
    public static void initDistribucion(ComponenteDistribuidor objComponenteDistribuidor){
        if(objComponenteDistribuidor != null){
            PlantillaCombo objInitPlantillaCombo = objComponenteDistribuidor.getObjPlantillaComboDistribucionGrupalSeleccionada();
            if(objComponenteDistribuidor.actualizarPlantillaComboDistribucionGrupalSeleccionada(objInitPlantillaCombo)){
                if(objComponenteDistribuidor.ubicarComponentesEnTablaDistribucion()){                
                    Utileria.viewConsole(objComponenteDistribuidor.getName() + " - Distribucion Inicializada.");
                }
            }
        }else{
            UtilRender.printlnConsole("Objeto componente distribuidor Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
    }
    
    /**
     * Devuelve el Array que representa los nombres de los parametros del <code>Method</code>.
     * @param objMetodo Método por el cual se devolverán los parametros.
     * @return Array que representa los nombres de los parametros del <code>Method</code>.
     */
    public static String[] devolverNombresParametroMetodo(Method objMetodo){
      if(objMetodo != null){
            try{
                com.thoughtworks.paranamer.BytecodeReadingParanamer objScannerByteCodeParams = new com.thoughtworks.paranamer.BytecodeReadingParanamer();            
                String[] params = objScannerByteCodeParams.lookupParameterNames(objMetodo);            
                return params;
            }catch(java.lang.Exception ex){
                Logger.getLogger(GeneradorComponentes.class.getName()).log(Level.SEVERE, null, ex);
            }   
            return null;
        }else{
            UtilRender.printlnConsole("Objeto Tipo Dato Reflexión Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
      return null;
    }
    
    /**
     * Devuelve el Array que representa los nombres de los parametros del <code>Constructor</code>.
     * @param objConstructor Constructor por el cual se devolverán los parametros.
     * @return Array que representa los nombres de los parametros del <code>Constructor</code>.
     */
    public static String[] devolverNombresParametroConstructor(Constructor objConstructor){
      if(objConstructor != null){
        try{
            com.thoughtworks.paranamer.BytecodeReadingParanamer objScannerByteCodeParams = new com.thoughtworks.paranamer.BytecodeReadingParanamer();            
            String[] params = objScannerByteCodeParams.lookupParameterNames(objConstructor);            
            return params;
        }catch(java.lang.Exception ex){
            Logger.getLogger(GeneradorComponentes.class.getName()).log(Level.SEVERE, null, ex);
        }   
        return null;
    }else{
            UtilRender.printlnConsole("Objeto Constructor Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
      return null;
    }
    
    /**
     * Devuelve el Array formateado con el estilo Kamel Case.
     * @param params Array que se formaterá.
     * @return Array formateado con el estilo Kamel Case.
     */
    public static String[] devolverParametrosFormateados(String[] params){
        if(params != null){
            String[] nombres = new String[params.length];
            int i = 0;
            for(String nombre : params){
                String temp = Utileria.getKamelCaseFormat(nombre, true);            
                nombres[i] = temp;
                i++;
            }            
            return nombres;
        }else{
            UtilRender.printlnConsole("parametro Nulo.", UtilRender.ACTION_NORMAL, false);            
        }
        return null;
    }
    
    /**
     * Devuelve el Objeto de Confguración de Visualización para el Método que representa una Propiedad Clase.
     * @return Objeto de Confguración de Visualización para el Método que representa una Propiedad Clase.
     */
    public static CustomObjetoReflexion crearCustomObjetoReflexion(){
        CustomObjetoReflexion objCustomObjetoReflexion = new CustomObjetoReflexion();
        return objCustomObjetoReflexion;
    }
    
    /**
     * Devuelve el Objeto de Confguración de Visualización para el Método que representa una Propiedad Clase.
     * @param generarRepresentacion Indica si se generará una nueva representación para la asociación de representación de la propiedad.
     * @return Objeto de Confguración de Visualización para el Método que representa una Propiedad Clase.
     */
    public static CustomObjetoReflexion crearCustomObjetoReflexion(boolean generarRepresentacion){
        CustomObjetoReflexion objCustomObjetoReflexion = new CustomObjetoReflexion(generarRepresentacion);
        return objCustomObjetoReflexion;
    }
    
    /**
     * Devuelve el Objeto de Confguración de Visualización para el Método que representa una Propiedad Clase.
     * @param objMethod Referencia de la Propiedad que se utilizará para la Representación de la Propiedad. 
     * @return Objeto de Confguración de Visualización para el Método que representa una Propiedad Clase.
     */
    public static CustomObjetoReflexion crearCustomObjetoReflexion(ObjetoReflexion objMethod){
        CustomObjetoReflexion objCustomObjetoReflexion = new CustomObjetoReflexion(objMethod);
        return objCustomObjetoReflexion;
    }
    
    /**
     * Devuelve el Objeto de Confguración de Visualización para el Método que representa una Propiedad Clase.
     * @param objComponenteDistribuidorGenerador Referencia del Componente que se asociará a la Representación.
     * @return Objeto de Confguración de Visualización para el Método que representa una Clase.
     */
    public static CustomObjetoReflexion crearCustomObjetoReflexion(ComponenteDistribuidorGenerador objComponenteDistribuidorGenerador){
        CustomObjetoReflexion objCustomObjetoReflexion = new CustomObjetoReflexion(objComponenteDistribuidorGenerador);
        return objCustomObjetoReflexion;
    }   
    
    public static Oyente findOyente(String strFind){
        for(OyenteBase objOyenteBase : GeneradorComponentes.objOyentesBase){
            if(objOyenteBase.getStrNombre().toLowerCase().equals(strFind.toLowerCase()) ||
                    objOyenteBase.getStrAccion().toLowerCase().equals(strFind.toLowerCase()) ||
                    objOyenteBase.getStrClaseAdaptadora().toLowerCase().equals(strFind.toLowerCase()) ||
                    objOyenteBase.getStrInterfaz().toLowerCase().equals(strFind.toLowerCase())){
                Oyente objOyente = GeneradorComponentes.crearOyente(objOyenteBase);
                return objOyente;
            }
        }
        return null;
    }
    
    public static EventoOyente findEventoOyente(String strFind){
        for(OyenteBase objOyenteBase : GeneradorComponentes.objOyentesBase){
            for(EventoBase objEventoBase : objOyenteBase.getObjEventosBase()){
                if(objEventoBase.getStrNombre().toLowerCase().equals(strFind.toLowerCase()) || 
                        objEventoBase.getStrAlias().toLowerCase().equals(strFind.toLowerCase())){
                    Oyente objOyente = GeneradorComponentes.crearOyente(objOyenteBase);
                    EventoOyente objEvento = GeneradorComponentes.crearEvento(objEventoBase);
                    objEvento.setObjOyente(objOyente);
                    return objEvento;
                }                
            }
        }
        return null;
    }
}